home *** CD-ROM | disk | FTP | other *** search
/ CD Exchange / CD Exchange - Volume 1.iso / graphics / utils / videotracker / develop / sourceaga / scroll.s < prev    next >
Text File  |  1994-01-21  |  65KB  |  3,195 lines

  1.  
  2. ;rout            ;when this is off, the routine-file will be
  3.             ;assembled, on=testing
  4.             
  5. ;debug            ;when this is on, colors in the background will
  6.             ;show how much time the routine needs.
  7.  
  8. ;ntsctest        ;when this is on, the routineplayer is in ntsc-mode
  9.  
  10. ;ocs            ;off=AGA,on=OCS testing not possible on OCS !
  11.  
  12. routinemode    equ    2        ;the routinemode !
  13.  
  14.  
  15. ; VideoTracker AGA developer source 25-12-93
  16. ; 24-bits colors, Super-HiRes, HAM8, maximum burstmode (64 pixels aligned)
  17. ; wich makes low-resolution overscan a bit ugly.
  18. ; no "interactive" support anymore, it's only used by Kick 1.3 users.
  19.  
  20. ; the first part of the source handles the things that are necessary to
  21. ; show the picture/copper and playing of the routine.
  22. ; the part between the "***" lines is the routine-source.
  23. ; at the bottom of the file, there are the necessary incbin-files who
  24. ; are needed to test the routine.
  25. ; these are saved with "save effect" in videotracker. they are raw
  26. ; data files which can be fonts,pictures,landscapes,vectorobjects
  27. ; etcetra.
  28. ; the incbin-files are put in the "variables" table, in the routine
  29. ; player-handler
  30. ; the place where it's done can be found by searching for "!!!"
  31.  
  32.     opt    a+    ;devpac 3 optimize
  33.     opt    o+
  34.  
  35. vew_wid    equ    48
  36. vew_hgt    equ    290
  37. win_hgt    equ    117
  38. win_str    equ    $1a
  39.  
  40.         ifd    ocs
  41. pic_wid        equ    4        ;wide in bytes
  42. pic_hgt        equ    6        ;hoogte
  43. pic_dpt        equ    8        ;number planes
  44. pic_ani        equ    10        ;aantal effes (anim)
  45. pic_vew        equ    12        ;viewmode
  46. pic_cycstr    equ    14        ;cycle start (*4)
  47. pic_cycend    equ    15        ;cycle end (*4)
  48. pic_cycspd    equ    16        ;cycle speed (*4)
  49. pic_cycadd    equ    17        ;cycle add (*4)
  50. pic_palnum    equ    30        ;aantal kleuren
  51. pic_pal        equ    32        ;palette start
  52. pic_palsiz    equ    256*2        ;vaste palette size
  53. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  54.         endc
  55.         
  56.         ifnd    ocs
  57. pic_wid        equ    4        ;wide in bytes
  58. pic_hgt        equ    6        ;hoogte
  59. pic_dpt        equ    8        ;number planes
  60. pic_ani        equ    10        ;aantal effes (anim)
  61. pic_vew        equ    12        ;viewmode
  62. pic_cycstr    equ    14        ;cycle start (*8)
  63. pic_cycend    equ    15        ;cycle end (*8)
  64. pic_cycspd    equ    16        ;cycle speed (*8)
  65. pic_cycadd    equ    17        ;cycle add (*8)
  66. pic_widmod    equ    46        ;animation-width modulo
  67. pic_future    equ    50        ;free future space
  68. pic_palnum    equ    62        ;aantal kleuren
  69. pic_pal        equ    64        ;palette start
  70. pic_palsiz    equ    256*4        ;vaste palette size (longwords)
  71. pic_raw        equ    pic_pal+pic_palsiz    ;palette start
  72.         endc
  73.         
  74. fon_hgt        equ    4            ;font hoogte
  75. fon_wid        equ    8            ;plane breedte in bytes
  76. fon_dpt        equ    12            ;depth
  77. fon_chrf    equ    16            ;eerste character
  78. fon_chrl    equ    20            ;laatste character
  79. fon_widtab    equ    24            ;font breedte per char
  80. fon_rawpos    equ    256*2+fon_widtab    ;start raw char position
  81. fon_raw        equ    256*4+fon_rawpos    ;start raw planes
  82.  
  83. var_len        equ    $300        ;lengte vartabel
  84.  
  85. var__GfxBase    equ    $000        ;graphics lib
  86. var_pic1    equ    $004        ;current picture
  87. var_anispd1    equ    $008        ;animspeed
  88. var_anitel1    equ    $00c        ;animcount
  89. var_cprbck    equ    $010        ;copperback
  90. var_bck        equ    $014        ;background
  91. var_pic2    equ    $018        ;current picture
  92. var_ntsc    equ    $01c        ;ntsc/pal frequence
  93. var_lnd        equ    $020        ;landscape
  94. var_anilop1    equ    $024
  95. var_rottrg    equ    $028        ;effect trigger
  96. var_txt1    equ    $040        ;text
  97. var_txt16    equ    15*4+var_txt1
  98. var_vec1    equ    $080        ;vectors
  99. var_vec16    equ    15*4+var_vec1
  100. var_fon1    equ    $0c0        ;fonts
  101. var_fon16    equ    15*4+var_fon1
  102. var_cols1    equ    $100        ;colorsets
  103. var_cols16    equ    15*4+var_cols1
  104. var_obj1    equ    $180        ;objects
  105. var_obj16    equ    15*4+var_obj1
  106.  
  107.     ifd    rout
  108.     ;videotracker routine-test
  109.  
  110.     incdir    "w:include/"
  111.     include    "exec/types.i"
  112.     include    "graphics/gfxbase.i"
  113.     include    "lvo/graphics_lib.i"
  114.     incdir    'videotracker:effect/'
  115.  
  116.     SECTION    1,CODE_C
  117. tus
  118.     lea    var,a0
  119.  
  120.     move.l    #rotincfon,var_fon1(a0)        ;incbinfile !!!
  121.     move.l    #rotincfon,4+var_fon1(a0)    ;incbinfile !!!
  122.     move.l    #rotinctxt,var_txt1(a0)        ;incbinfile !!!
  123.  
  124. ;    move.l    #rotincobj,var_obj1(a0)    ;incbinfile !!!
  125. ;    move.l    #rotincbck,var_bck(a0)    ;incbinfile !!!
  126. ;    move.l    #rottube,var_vec1(a0)    ;incbinfile !!!
  127. ;    move.l    #rotsrc,curpic1        ;picture !!!
  128. ;    move.l    #rotsrc,curpal1        ;palette !!!
  129. ;    move.l    #rotset,var_cols1(a0)    ;colorset !!!
  130.  
  131.     bsr    paltabres
  132.  
  133.     move.l    ($4).w,a6
  134.     sub.l    a1,a1
  135.     jsr    -$126(a6)        ;findtask
  136.     move.l    d0,curtsk
  137.     move.l    d0,a0
  138.     move.l    $b8(a0),tskpri
  139.  
  140.     lea    dosnam,a1        ;doslib openen
  141.     moveq.l    #0,d0
  142.     move.l    (4).w,a6
  143.     jsr    -408(a6)        ;openlib
  144.     move.l    d0,doslib
  145.  
  146.     bsr.s    label5            ;videotracker opstarten
  147.     
  148.     move.l    curtsk,a0
  149.     move.l    tskpri,$b8(a0)
  150.     move.l    ($4).w,a6
  151.     jsr    -$84(a6)        ;forbid
  152.  
  153.     move.l    doslib,a1
  154.     move.l    (4).w,a6
  155.     jsr    -414(a6)        ;closelib
  156.  
  157.     moveq.l    #0,d0
  158.     rts
  159.     
  160. label5
  161.     move.l    (4).w,a6        ;workbench gedoe
  162.  
  163.     move.b    530(a6),ntscmode    ;50/60 hertz halen
  164.  
  165.     ifd    ntsctest
  166.     move.b    #60,ntscmode        ;60 hertz (ntsc)
  167.     endc
  168.  
  169.     cmp.b    #50,ntscmode        ;ntsc ?
  170.     beq.s    str.ntsc
  171.     move.l    #vew_hgt-56,hogscr    ;set NTSC screen hight
  172. str.ntsc
  173.  
  174.     lea    cprjmp,a2        ;copjmp zetten !
  175.     move.l    #cprbck-8,d0
  176.     move.w    d0,6(a2)
  177.     swap    d0
  178.     move.w    d0,2(a2)
  179.  
  180.     lea    cprbck-8,a2        ;copstr zetten !
  181.     move.l    #cpr,d0
  182.     move.w    d0,6(a2)
  183.     swap    d0
  184.     move.w    d0,2(a2)
  185.  
  186.     bsr    cprsprrem        ;sprites legen
  187.  
  188.     lea    gfxnam,a1        ;graphics lib openen
  189.     move.l    (4).w,a6
  190.     jsr    -408(a6)        ;openlib
  191.     move.l    d0,a6
  192.     move.l    d0,gfxlib
  193.     move.l    38(a6),oldcprlist
  194.  
  195.     bset    #1,$bfe001
  196.     bsr    copbuf            ;copper vullen
  197.  
  198.     bsr    sysoff
  199.  
  200. gadrun
  201.     btst    #6,($bfe001).l
  202.     bne    gadrun
  203.  
  204. scrend
  205. scrend.play
  206.     bsr    syson
  207.  
  208.     move.l    gfxlib,a1
  209.     move.l    (4).w,a6
  210.     jsr    -414(a6)        ;closelib
  211.  
  212. scrend.qb
  213.     moveq.l    #0,d0    
  214.     rts
  215.     
  216.     ;vertical blank interrupt, no blits.
  217.     ;handles counters,interlace,sprite
  218.     ;level 3
  219.  
  220. intvb
  221.     bra.s    intvb.cnt
  222.     dc.l    'VIDU'
  223.     dc.l    'LOOP'
  224. intvb.cnt
  225.     movem.l    d0-d7/a0-a6,-(sp)
  226.     lea    ($dff000).l,a6
  227.  
  228.     move.w    $01e(a6),d0
  229.     btst    #5,d0            ;vblank ?
  230.     bne.s    intvb.vb
  231.  
  232.     bra.s    intcop.end
  233.  
  234. intvb.vb
  235.     bsr    grap
  236.     bsr    palctr            ;palette zetten
  237.     bsr.s    copbuf            ;copper vullen
  238.     
  239. intvb.end
  240.     move.w    #$0020,$09c(a6)    ;vb bit wissen
  241.     movem.l    (sp)+,d0-d7/a0-a6    ;multitask uit, shit !
  242.     rte
  243.  
  244. intcop.end
  245.     movem.l    (sp)+,d0-d7/a0-a6
  246.     move.l    intvbold,-(sp)
  247.     rts
  248.  
  249.     ;transmission buffer empty routine, BLIT !
  250.     ;handles routines,animations
  251.     
  252. inttbe                    ;tbe interrupt
  253.     movem.l    d0-d7/a0-a6,-(sp)
  254.     lea    ($dff000).l,a6
  255.  
  256.     move.w    $01e(a6),d0
  257.     btst    #0,d0            ;no tbe ?
  258.     beq.s    intdskblk
  259.  
  260.  
  261.     btst    #6,($bfe001).l        ;muis ingedrukt ?
  262.     beq.s    inttbe.cop
  263.     btst    #2,($dff016).l
  264.     beq.s    inttbe.cop
  265.  
  266.     ifd    debug
  267.     move.w    #$700,$dff180
  268.     endc
  269.     
  270.     bsr    rotply            ;routineplayer BLIT !
  271.     bsr.s    copbuf            ;copper vullen
  272.  
  273.     ifd    debug
  274.     move.w    #$070,$dff180
  275.     endc
  276.     
  277. inttbe.cop
  278.  
  279. inttbe.end
  280.     move.w    #$0001,$09c(a6)
  281.     movem.l    (sp)+,d0-d7/a0-a6
  282.     rte
  283.  
  284. intdskblk
  285.     move.w    #$0001,$09c(a6)        ;be sure for no tbe handling
  286.     movem.l    (sp)+,d0-d7/a0-a6
  287.     move.l    inttbeold,-(sp)
  288.     rts
  289.  
  290.  
  291.     ;moves the copperbuffer to the copperlist
  292.     ;sort of double buffering
  293.     
  294. copbuf
  295.     movem.l    d0-d7/a0-a6,-(sp)
  296.  
  297.     lea    ($dff000).l,a6
  298.  
  299. copbuf.novb                ;copperchange overslaan
  300.     moveq.l    #0,d0
  301.     move.b    $005(a6),d0
  302.     lsl.w    #8,d0
  303.     moveq.l    #0,d1
  304.     move.b    $006(a6),d1
  305.     add.w    d1,d0
  306.  
  307.     cmp.w    #$4,d0            ;lower limit, all stations 100%
  308.     blt    copbuf.novb
  309.  
  310.     cmp.b    #50,ntscmode
  311.     beq.s    copbuf.pal
  312.     cmp.w    #$133-72-8,d0        ;ntsc grens
  313.     bge    copbuf.novb
  314.     bra.s    copbuf.cont
  315. copbuf.pal
  316.     cmp.w    #$133-8,d0        ;pal grens
  317.     bge    copbuf.novb
  318. copbuf.cont
  319.  
  320.     lea    gra.s,a0        ;buffer copieren
  321.     lea    cprbuf,a1
  322. copbuf_aga                ;AGA stuff :)
  323.     move.l    #(gra.ql)/4-1,d0
  324. copbuf.a
  325.     move.w    2(a0),2(a1)
  326.     add.l    #4,a0
  327.     add.l    #4,a1
  328.     dbra    d0,copbuf.a
  329.  
  330. copbuf.end
  331.     movem.l    (sp)+,d0-d7/a0-a6
  332.     rts
  333.  
  334.     ;goes back to the workbench
  335.     
  336. syson
  337.     movem.l    d0-d7/a0-a6,-(sp)
  338.  
  339.     move.w    #$0001,$dff09a        ;tbeint uit
  340.     move.l    intvbold,($6c).w
  341.     move.l    inttbeold,($64).w
  342.  
  343.     move.l    4,a6
  344.     jsr    -138(a6)        ;permit
  345.  
  346.     move.l    gfxlib,a6
  347.     jsr    -462(a6)        ;disownblitter
  348.  
  349.     move.l    wbview,a1
  350.     move.l    gfxlib,a6
  351.     jsr    _LVOLoadView(a6)     ; Fix view
  352.     jsr    _LVOWaitTOF(a6)
  353.     jsr    _LVOWaitTOF(a6)         ; wait for LoadView()
  354.  
  355. syson.ras
  356.     cmp.b    #$c0,$dff006        ;prevent copperjump
  357.     bne    syson.ras
  358.  
  359.     move.l    gfxlib,a6
  360.     move.l    gb_copinit(a6),$dff080     ; Kick it into life
  361.  
  362.     movem.l    (sp)+,d0-d7/a0-a6
  363.     rts
  364.     
  365.     ;goes back to the gadgetscreen
  366.     
  367. sysoff
  368.     movem.l    d0-d7/a0-a6,-(sp)
  369.      
  370.     move.l    gfxlib,a6
  371.     move.l    gb_ActiView(a6),wbview    ;current view
  372.     sub.l    a1,a1            ; clear a1
  373.     jsr     _LVOLoadView(a6)     ; Flush View to nothing
  374.     jsr    _LVOWaitTOF(a6)     ; Wait once
  375.     jsr    _LVOWaitTOF(a6)     ; Wait again.
  376.  
  377.     move.l    gfxlib,a6
  378.     jsr    -456(a6)        ;ownblitter
  379.  
  380.     move.l    4,a6
  381.     jsr    -132(a6)        ;forbid
  382.         
  383.     move.l    ($6c).w,intvbold
  384.     move.l    #intvb,($6c).w
  385.     move.l    ($64).w,inttbeold
  386.     move.l    #inttbe,($64).w
  387.     move.w    #$8001,$dff09a        ;tbeint aan
  388.     bsr    gracpr            ;reset copper
  389.     bsr    copbuf            ;copy copper
  390.     move.l    #cpr,$dff080
  391.  
  392.     movem.l    (sp)+,d0-d7/a0-a6
  393.     rts
  394.     
  395. cprsprrem
  396.     movem.l    d0-d7/a0-a6,-(sp)
  397.     lea    cprspr,a0
  398.     move.l    #sprdat,d0
  399.     move.w    #7,d1
  400. cprsprrem.a
  401.     move.w    d0,3*2(a0)
  402.     swap    d0
  403.     move.w    d0,1*2(a0)
  404.     swap    d0
  405.     add.l    #8,a0
  406.     dbra    d1,cprsprrem.a
  407.     movem.l    (sp)+,d0-d7/a0-a6
  408.     rts
  409.  
  410. varset                    ;variablen neerzetten
  411.     movem.l    d0-d7/a0-a6,-(sp)
  412.     move.l    #var,a0
  413.  
  414.     move.l    #cprbck,var_cprbck(a0)
  415.     move.l    gfxlib,var__GfxBase(a0)
  416.     move.b    ntscmode,var_ntsc(a0)
  417.  
  418.     move.l    curpic1,var_pic1(a0)    ;variabel
  419.     move.l    curpic2,var_pic2(a0)    ;variabel
  420.     move.w    anispd1,var_anispd1(a0)
  421.     move.w    anitel1,var_anitel1(a0)
  422.     move.b    anilop1,var_anilop1(a0)
  423.     move.l    #rottrg,var_rottrg(a0)
  424.     movem.l    (sp)+,d0-d7/a0-a6
  425.     rts
  426.     
  427.     ;this routine handles all videotracker-routines
  428.  
  429. rotply    
  430.     movem.l    d0-d7/a0-a6,-(sp)
  431.  
  432.     moveq.l    #0,d0
  433.  
  434.     lea    currot1,a2        ;routine 1
  435.     move.w    rotinf1,d0        ;routine info
  436.     bsr.s    rotplyr
  437.  
  438. rotply.end
  439.     movem.l    (sp)+,d0-d7/a0-a6
  440.     rts
  441.  
  442.     ;this routine handles 1 routine, BLIT !
  443.     
  444. rotplyr
  445.     movem.l    d0-d7/a1-a6,-(sp)
  446.  
  447.     move.l    #rot,(a2)        ;routinestart address
  448.  
  449. ;    move.b    #50,ntscmode        ;ntsc/pal hz
  450.     clr.l    curpic2            ;background picture
  451.     move.w    #1,anispd1        ;animationspeed
  452.     clr.w    anitel1            ;animation position
  453.  
  454.     lea    var,a0            ;communication-table
  455. ;    move.l    #rotinc,var_cols1(a0)    ;incbinfile !!!!!!!!!
  456.  
  457.     move.b    #0,anilop1        ;animloop off/on !!!
  458.     move.w    #32,anispd1        ;animdelay !!!
  459.     move.l    #routinemode,d0        ;routinemode !!!
  460.  
  461.     sub.l    a0,a0            ;picture info legen
  462.  
  463.     tst.l    (a2)            ;is er een routine ?
  464.     beq    rotplyr.end        ;interlace handling
  465.  
  466.     move.l    intdel,d2        ;delay
  467.     move.l    inttel,d1        ;teller
  468.     cmp.w    d2,d1
  469.     blt    rotplyr.end
  470.     clr.l    inttel
  471.                 
  472.     bsr    varset            ;variabelen updaten
  473.  
  474.     move.l    (a2),a1            ;routine halen
  475.     move.l    #var,a0            ;variablen tabel
  476.  
  477.     movem.l    d3-d7/a1-a6,-(sp)
  478.     moveq.l    #0,d1            ;vars wissen
  479.     moveq.l    #0,d2
  480.     moveq.l    #0,d3
  481.     moveq.l    #0,d4
  482.     moveq.l    #0,d5
  483.     moveq.l    #0,d6
  484.     moveq.l    #0,d7
  485.     sub.l    a2,a2
  486.     sub.l    a3,a3
  487.     sub.l    a4,a4
  488.     sub.l    a5,a5
  489.  
  490.     jsr    4(a1)            ;routine afwerken
  491.     movem.l    (sp)+,d3-d7/a1-a6
  492.  
  493.     ;Routine:
  494.     ;
  495.     ;Input:
  496.     ;a0=variabelentabel
  497.     ;d0=routinemode
  498.     ;
  499.     ;Output:
  500.     ;a0=picture
  501.     ;d1=copperlist
  502.     ;d2=interruptdelay        (NOT used till now)
  503.     
  504.     move.w    #$0020,$dff09a        ;vb off !
  505.  
  506.     move.l    d2,intdel        ;delay
  507.  
  508.     lea    cprjmp,a3
  509.     move.l    #cprbck-8,d0
  510.  
  511.     cmp.l    (a2),a1            ;routine ondertussen gewipt ?
  512.     bne.s    rotplyr.nocop
  513.     tst.l    d1            ;copperlist ?
  514.     beq.s    rotplyr.nocop
  515.     move.l    d1,d0
  516. rotplyr.nocop
  517.     move.w    d0,6(a3)
  518.     swap    d0
  519.     move.w    d0,2(a3)
  520.  
  521.     cmp.l    #0,a0            ;picture ?
  522.     beq.s    rotplyr.endvb
  523.  
  524.     move.l    a0,curpic1        ;current picture (cycle)
  525.     move.l    a0,curpal1        ;current palette
  526.  
  527.     tst.b    rotdpl            ;plane is geleverd
  528.     beq.s    rotplyr.set
  529.     clr.b    rotdpl
  530.     clr.l    cycdel1            ;cycle info wissen
  531.     clr.l    4+cycdel1
  532.     clr.l    curfrm1            ;curfrm1, altijd planes zetten
  533. rotplyr.set
  534.     clr.b    dplctr
  535.     bsr.s    grap
  536.     bsr    grac            ;colorset
  537. rotplyr.endvb
  538.     move.w    #$8020,$dff09a
  539. rotplyr.end
  540.     movem.l    (sp)+,d0-d7/a1-a6
  541.     rts
  542.  
  543.     ;removes possible routine-coppers
  544.     
  545. gracpr
  546.     movem.l    d0-d7/a0-a6,-(sp)
  547.     lea    cprjmp,a3
  548.     move.l    #cprbck-8,d0        ;copperlist resetten
  549.     move.w    d0,6(a3)
  550.     swap    d0
  551.     move.w    d0,2(a3)
  552.     movem.l    (sp)+,d0-d7/a0-a6
  553.     rts
  554.  
  555. grap                    ;d7=anim
  556.     movem.l    d0-d7/a0-a6,-(sp)
  557.  
  558.     clr.l    d7
  559.  
  560.     tst.l    curpic1            ;current picture ?
  561.     beq    grap.end
  562.  
  563.     move.l    curpic1,a2        ;normal pic halen
  564.  
  565.     lea    gracprscr,a1        ;window neerzetten
  566.     move.l    hogscr,d1
  567.  
  568.     move.w    pic_hgt(a2),d3        ;pic hoogte
  569.     move.w    pic_vew(a2),d5
  570.     btst    #2,d5            ;interlace ?
  571.     beq.s    grap.nohi4
  572.     lsr.w    #1,d3            ;/2
  573. grap.nohi4
  574.     cmp.w    d3,d1
  575.     bge.s    grap.hog
  576.     move.w    d1,d3
  577. grap.hog
  578.     sub.w    d3,d1
  579.     lsr.w    #1,d1
  580.     add.w    #win_str,d1
  581.     move.w    d1,d2
  582.     add.w    d3,d2
  583.  
  584.     move.b    d1,2(a1)        ;y start
  585.     move.b    d2,6(a1)        ;y end
  586.  
  587.     move.w    pic_wid(a2),d4        ;pic breedte in bytes
  588.     lsl.l    #3,d4
  589.  
  590.     move.l    #vew_wid*8,d0
  591.     move.l    #0,d1
  592.     move.l    #$61,d6
  593.  
  594.     cmp.w    #40,pic_wid(a2)        ;overscan ?
  595.     ble.s    grap.noov1
  596.     move.l    #$41,d6
  597. grap.noov1
  598.  
  599.     move.w    pic_vew(a2),d5
  600.     btst    #15,d5            ;hires ?
  601.     beq.s    grap.nohi2
  602.  
  603.     move.l    #(vew_wid)*8*2,d0
  604.     move.l    #1,d1
  605.     move.l    #$61,d6
  606.  
  607.     cmp.w    #80,pic_wid(a2)        ;overscan ?
  608.     ble.s    grap.nohi2
  609.     move.l    #(vew_wid)*8*2,d0
  610.     move.l    #$51,d6
  611.  
  612.     bra.s    grap.noshi2
  613. grap.nohi2    
  614.     btst    #6,d5            ;super hires ?
  615.     beq.s    grap.noshi2
  616.  
  617.     move.l    #(vew_wid)*8*4,d0
  618.     move.l    #2,d1
  619.     move.l    #$61,d6
  620.  
  621.     cmp.w    #80*2,pic_wid(a2)    ;overscan ?
  622.     ble.s    grap.noshi2
  623.     move.l    #(vew_wid)*8*4,d0
  624.     move.l    #$51,d6
  625.  
  626. grap.noshi2    
  627.  
  628.     clr.w    d5
  629.     cmp.w    d0,d4            ;breeder dan scherm ?
  630.     ble.s    grap.c
  631.     move.w    d4,d5
  632.     move.w    d0,d4
  633.     sub.w    d0,d5            ;modulo
  634.     lsr.w    #3,d5            ;/8
  635. grap.c
  636.     lsr.w    d1,d0
  637.     lsr.w    d1,d4
  638.  
  639.     move.w    d0,d2
  640.     sub.w    d4,d2
  641.     lsr.w    #1,d2            ;/2
  642.  
  643.     add.w    d6,d2
  644.     move.b    d2,3(a1)        ;x start
  645.     move.w    d2,d3            ;d3 bewaren !
  646.  
  647.     add.w    d4,d2            ;d4 bewaren !
  648.     move.b    d2,7(a1)        ;x end
  649.     
  650.     move.w    pic_vew(a2),d6
  651.     btst    #15,d6            ;hires ?
  652.     beq.s    grap.nohi5    
  653.     add.l    d4,d4            ;*2
  654.     bra.s    grap.noshi5
  655. grap.nohi5
  656.     btst    #6,d6            ;super hires ?
  657.     beq.s    grap.noshi5    
  658.     add.l    d4,d4            ;*4
  659.     add.l    d4,d4
  660. grap.noshi5
  661.  
  662.     move.l    d7,-(sp)
  663.     move.w    pic_vew(a2),d6
  664.     move.l    #17,d0
  665.     move.l    #4,d1            ;ecs 1
  666.     move.l    #3,d7
  667.  
  668.     btst    #15,d6            ;hires ?
  669.     beq.s    grap.nohi3    
  670.     move.l    #17,d0            ;ecs 9
  671.     move.l    #4,d1            ;ecs 2
  672.     move.l    #2,d7
  673.     bra.s    grap.noshi3
  674. grap.nohi3
  675.     btst    #6,d6            ;super hires ?
  676.     beq.s    grap.noshi3    
  677.     move.l    #17,d0            ;ecs 9
  678.     move.l    #4,d1            ;ecs 2
  679.     move.l    #1,d7
  680. grap.noshi3
  681.     sub.w    d0,d3
  682.     lsr.w    #1,d3
  683.     move.w    d3,10(a1)        ;ddfstrt
  684.     
  685.     move.w    d4,d2            ;pic breedte in pixels
  686.     lsr.w    #4,d2            ;/16
  687.     sub.w    d1,d2            ;-1
  688.  
  689.     lsl.w    d7,d2            ;*8
  690.     add.w    d2,d3
  691.     move.w    d3,14(a1)        ;ddfstop
  692.     move.l    (sp)+,d7
  693.     
  694.     lea    pic_raw(a2),a0
  695.  
  696.     moveq.l    #0,d2
  697.     move.w    pic_dpt(a2),d2
  698.     sub.l    #1,d2
  699.     muls    pic_wid(a2),d2
  700.     add.w    d2,d5
  701.  
  702.     move.w    pic_vew(a2),d2        ;viewmode add
  703.     btst    #2,d2
  704.     beq.s    grap.nolace4
  705.  
  706.     moveq.l    #0,d2
  707.     move.w    pic_dpt(a2),d2
  708.     muls    pic_wid(a2),d2
  709.     add.w    d2,d5            ;interlace gedoe
  710. grap.nolace4
  711.  
  712.     lea    gracprbpl,a4        ;iffpln neerzetten
  713.     lea    gracprpln,a0        ;iffpln neerzetten
  714.     moveq.l    #0,d2
  715.     move.w    pic_dpt(a2),d2        ;plnnummer 1 halen
  716.     move.l    #8,d6            ;copper step !
  717.  
  718.     tst.l    curpic2            ;2de picture ?
  719.     bne.s    grap.pic2
  720. grap.nopic2
  721.     move.w    d5,34(a1)        ;modulo oneven zetten
  722.     bra    grap.nodpl
  723. grap.pic2
  724.     move.l    curpic2,a3        ;oneven plane
  725.     move.l    curpic2+4,a6        ;oneven plane
  726.     move.l    currot2,a5        ;oneven plane
  727.     clr.l    curpic2            ;mischien niet goed
  728.     clr.l    curpic2+4        ;mischien niet goed
  729.     clr.l    curpal2            ;mischien niet goed
  730.     clr.l    currot2            ;mischien niet goed
  731.  
  732.     cmp.l    curpic1,a3        ;picture hetzelfde ?
  733.     beq.s    grap.nopic2
  734.     
  735.     cmp.l    #0,currot1        ;routine ?    
  736.     beq.s    grap.norot
  737.     cmp.l    currot1,a5        ;routine hetzelfde ?
  738.     beq.s    grap.nopic2
  739. grap.norot
  740.     cmp.b    #4,d2            ;> 16 kleuren ? (AGA)
  741.     bgt    grap.nopic2
  742.  
  743.     move.w    pic_dpt(a3),d3        ;plnnummer 2 halen
  744.     cmp.b    d2,d3            ;gelijke plnummers ?
  745.     bne.s    grap.nopic2
  746.     move.w    pic_vew(a2),d1
  747.     cmp.w    pic_vew(a3),d1        ;view gelijk ?
  748.     bne.s    grap.nopic2
  749.  
  750.     move.w    pic_vew(a2),d1        ;groter dan view test
  751.     btst    #6,d1            ;super hires ?
  752.     beq.s    grap.nohi2a
  753.     move.l    #vew_wid*4,d1
  754.     bra.s    grap.nohi2b
  755. grap.nohi2a
  756.     btst    #15,d1            ;hires ?
  757.     beq.s    grap.noshi2a
  758.     move.l    #vew_wid*2,d1
  759.     bra.s    grap.nohi2b
  760. grap.noshi2a
  761.     move.l    #vew_wid,d1
  762. grap.nohi2b
  763.     cmp.w    pic_wid(a2),d1        ;breder dan view ?
  764.     bgt.s    grap.small
  765.     cmp.w    pic_wid(a3),d1        ;breder dan view ?
  766.     bgt.s    grap.small
  767.  
  768.     move.w    pic_vew(a2),d1
  769.     btst    #2,d1
  770.     beq.s    grap.nolace8a
  771.     move.l    hogscr,d1
  772.     add.l    d1,d1
  773.     bra.s    grap.nolace8b
  774. grap.nolace8a
  775.     move.l    hogscr,d1
  776. grap.nolace8b
  777.     cmp.w    pic_hgt(a2),d1        ;hoger dan view ?
  778.     bgt.s    grap.small
  779.     cmp.w    pic_hgt(a3),d1        ;hoger dan view ?
  780.     bgt.s    grap.small
  781.     bra.s    grap.big
  782.  
  783. grap.small
  784.     move.w    pic_hgt(a2),d1        ;wid+hgt<vew
  785.     cmp.w    pic_hgt(a3),d1        ;hoogte gelijk ?
  786.     bne    grap.nopic2
  787.     move.w    pic_wid(a2),d1
  788.     cmp.w    pic_wid(a3),d1        ;breedte gelijk ?
  789.     bne    grap.nopic2
  790.  
  791. grap.big
  792.     move.l    a3,curpic2        ;toch wel goed !
  793.     move.l    a6,curpic2+4
  794.     move.l    a3,curpal2
  795.     move.l    a5,currot2
  796.  
  797.     tst.b    dplctr            ;dual playfield al gezet ?
  798.     beq    grap.nocop
  799.  
  800.     move.w    30(a1),34(a1)        ;modulo copieren
  801.  
  802.     move.w    2(a4),d1        ;bplcon0
  803.     btst    #10,d1            ;al dual playfield ?
  804.     beq.s    grap.ta
  805.  
  806.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  807.     move.w    6(a0),14(a0)
  808.  
  809.     move.w    18(a0),26(a0)        ;plane 2>3 copieren
  810.     move.w    22(a0),30(a0)
  811.  
  812.     move.w    34(a0),42(a0)        ;plane 4>5 copieren
  813.     move.w    38(a0),46(a0)
  814.  
  815.     move.w    50(a0),58(a0)        ;plane 6>7 copieren
  816.     move.w    54(a0),62(a0)
  817.  
  818.     bra.s    grap.tb
  819. grap.ta
  820.     move.w    24(a0),58(a0)        ;plane 3>7 copieren
  821.     move.w    28(a0),62(a0)
  822.  
  823.     move.w    18(a0),42(a0)        ;plane 2>5 copieren
  824.     move.w    22(a0),46(a0)
  825.  
  826.     move.w    10(a0),26(a0)        ;plane 1>3 copieren
  827.     move.w    14(a0),30(a0)
  828.  
  829.     move.w    2(a0),10(a0)        ;plane 0>1 copieren
  830.     move.w    6(a0),14(a0)
  831.  
  832. grap.tb
  833.     move.l    #palette,a3        ;palette copieren
  834.  
  835.     move.w    #16-1,d1
  836. grap.pal
  837.     move.l    (a3)+,60(a3)
  838.     dbra    d1,grap.pal
  839.  
  840. grap.nocop
  841.     add.w    d3,d2            ;aantal bitplanes
  842.     cmp.w    #8,d2            ;8 bitplanes ?
  843.     blt    grap.no8planes2
  844.     move.w    #%10000,d2        ;only bit 4
  845.     bra    grap.8planes2
  846. grap.no8planes2
  847.     lsl.w    #8,d2
  848.     lsl.w    #4,d2
  849. grap.8planes2
  850.     or.w    #$400,d2        ;dual playfield aan
  851.     move.w    d2,2(a4)        ;bplcon0
  852.  
  853.     movem.l    d0-d7/a0-a6,-(sp)
  854.  
  855.     move.l    curpic,a2        ;animpic ?
  856.     move.l    curfrm,d7
  857.     cmp.l    #0,a2
  858.     bne.s    grap.noanipic
  859.  
  860.     move.l    curpic2,a2        ;normal pic ?
  861.     move.l    curfrm2,d7
  862.     cmp.l    #0,a2
  863.     beq.s    grap.nodplpic
  864.  
  865. grap.noanipic
  866.     add.l    d6,a0
  867.     add.w    d6,d6
  868.     bsr.s    grappln            ;a2,d6,d7,d0
  869. grap.nodplpic
  870.     movem.l    (sp)+,d0-d7/a0-a6
  871.     add.w    d6,d6
  872.     bra.s    grap.nodpla
  873.  
  874.  
  875. grap.nodpl                ;geen dual playfield
  876.     cmp.w    #8,d2            ;8 bitplanes ?
  877.     blt    grap.no8planes
  878.     move.w    #%10000,d2        ;only bit 4
  879.     bra    grap.8planes
  880. grap.no8planes
  881.     lsl.w    #8,d2
  882.     lsl.w    #4,d2
  883. grap.8planes
  884.     move.w    d2,2(a4)        ;bplcon0
  885.  
  886. grap.nodpla
  887.     move.w    d5,30(a1)        ;modulo even
  888.  
  889.     moveq.l    #0,d3
  890.     add.w    pic_vew(a2),d3        ;viewmode add
  891.     moveq.l    #0,d2
  892.     move.w    2(a4),d2
  893.     or.l    d3,d2
  894.  
  895.     ifd    gui
  896.     tst.b    genlck
  897.     bne    grap.genset
  898.     endc
  899.  
  900.     or.l    #$100,d2        ;genlock off ($302)
  901.  
  902.     ifd    gui
  903.     bra    grap.gencont
  904. grap.genset
  905.     or.l    #$102,d2        ;genlock on ($302)
  906. grap.gencont
  907.     endc
  908.     
  909.     move.w    d2,2(a4)
  910.     
  911.     bsr.s    grappln            ;a2,d6,d7,d0
  912.  
  913. grap.end
  914.     
  915.     movem.l    (sp)+,d0-d7/a0-a6
  916.     rts
  917.         
  918.  
  919.     ;sets on of the 2 possible pictures to the copper
  920.     ;handles interlace
  921.  
  922.     ;d7=framenummer
  923.     ;d6=copperliststap
  924.     ;d0=raw planes positie
  925.     ;a2=current picture
  926. grappln                    ;planes invullen 
  927.     movem.l    d0-d7/a0-a6,-(sp)
  928.  
  929.     lea    pic_raw(a2),a1
  930.     move.l    a1,d0            ;raw planes
  931.     
  932.     moveq.l    #0,d2            ;x*y
  933.     move.w    pic_wid(a2),d2
  934.     lsr.l    #1,d2            ;/2
  935.     moveq.l    #0,d3
  936.     move.w    pic_hgt(a2),d3
  937.     muls    d3,d2
  938.     
  939.     move.l    d2,d4
  940.     add.l    d2,d2
  941.  
  942.     move.w    pic_dpt(a2),d3
  943.     muls    d3,d4            ;hele picture size
  944.     muls    d7,d4            ;frame*size d7 !!!
  945.  
  946.     add.l    d4,d4
  947.  
  948.     add.l    d4,d0
  949.  
  950.     move.l    #vew_wid,d5        ;max x view
  951.     move.l    hogscr,d4        ;max y view
  952.     move.w    pic_vew(a2),d1        ;viewmode add
  953.     btst    #2,d1
  954.     beq.s    grappln.nolace
  955.     add.l    d4,d4            ;max y view
  956. grappln.nolace
  957.     btst    #15,d1            ;hires ?
  958.     beq.s    grappln.nohi
  959.     move.l    #vew_wid*2,d5        ;max x view
  960.     bra.s    grappln.noshi
  961. grappln.nohi
  962.     btst    #6,d1            ;super hires ?
  963.     beq.s    grappln.noshi
  964.     move.l    #vew_wid*4,d5        ;max x view
  965. grappln.noshi
  966.  
  967.     moveq.l    #0,d3            ;scherm centreren
  968.     move.w    pic_wid(a2),d3        ;pic breedte in bytes
  969.     cmp.w    d5,d3            ;breder dan scherm ?
  970.     ble.s    grappln.qa
  971.     sub.w    d5,d3            ;-scherm breedte
  972.     lsr.w    #2,d3            ;/4
  973.  
  974.     add.l    d3,d3
  975.  
  976.     add.l    d3,d0
  977. grappln.qa
  978.     move.w    pic_hgt(a2),d3        ;pic hoogte in bytes
  979.     cmp.w    d4,d3            ;hoger dan scherm ?
  980.     ble.s    grappln.qb
  981.     sub.w    d4,d3            ;-scherm breedte
  982.     lsr.w    #1,d3            ;/2
  983.     moveq.l    #0,d5
  984.     move.w    pic_wid(a2),d5        ;pic breedte in bytes
  985.     muls    pic_dpt(a2),d5
  986.     muls    d5,d3
  987.     add.l    d3,d0
  988. grappln.qb
  989.     moveq.l    #0,d2
  990.     move.w    pic_wid(a2),d2
  991.  
  992.     move.w    pic_vew(a2),d5        ;interlace flipping ?
  993.     btst    #2,d5
  994.     beq.s    grappln.nolac7b
  995.  
  996.     move.w    $04(a6),d5        ;even/oneven ?
  997.     btst    #15,d5
  998.     beq.s    grappln.nolac7b
  999.     
  1000.     moveq.l    #0,d3
  1001.     move.w    pic_wid(a2),d3
  1002.     muls    pic_dpt(a2),d3
  1003.     add.l    d3,d0
  1004. grappln.nolac7b
  1005.  
  1006.     move.w    pic_dpt(a2),d1        ;plnnummer 1 halen
  1007.     tst.w    d1            ;0 planes ?
  1008.     beq    grappln.end
  1009.     sub.w    #1,d1
  1010. grappln.a
  1011.     move.w    d0,3*2(a0)
  1012.     swap    d0
  1013.     move.w    d0,1*2(a0)
  1014.     swap    d0
  1015.     add.l    d6,a0            ;d6=copper step !
  1016.     add.l    d2,d0
  1017.     dbra    d1,grappln.a
  1018.  
  1019.     cmp.w    #8,pic_dpt(a2)        ;8 planes ?
  1020.     bne    grappln.noham8
  1021.     btst    #3,pic_vew(a2)        ;ham ?
  1022.     beq    grappln.noham8
  1023.  
  1024.     move.w    -14(a0),d0        ;get 6
  1025.     move.w    -10(a0),d1
  1026.     move.w    -6(a0),d2        ;get 7
  1027.     move.w    -2(a0),d3
  1028.     move.w    -18(a0),-2(a0)        ;5>7
  1029.     move.w    -22(a0),-6(a0)        ;5>7
  1030.     move.w    -26(a0),-10(a0)        ;4>6
  1031.     move.w    -30(a0),-14(a0)        ;4>6
  1032.     move.w    -34(a0),-18(a0)        ;3>5
  1033.     move.w    -38(a0),-22(a0)        ;3>5
  1034.     move.w    -42(a0),-26(a0)        ;2>4
  1035.     move.w    -46(a0),-30(a0)        ;2>4
  1036.     move.w    -50(a0),-34(a0)        ;1>3
  1037.     move.w    -54(a0),-38(a0)        ;1>3
  1038.     move.w    -58(a0),-42(a0)        ;0>2
  1039.     move.w    -62(a0),-46(a0)        ;0>2
  1040.     move.w    d0,-62(a0)        ;6>0
  1041.     move.w    d1,-58(a0)        ;6>0
  1042.     move.w    d2,-54(a0)        ;7>1
  1043.     move.w    d3,-50(a0)        ;7>1
  1044. grappln.noham8
  1045.  
  1046. grappln.end
  1047.     movem.l    (sp)+,d0-d7/a0-a6
  1048.     rts
  1049.  
  1050.     ;sets palettes to palette-buffer
  1051.     
  1052. grac
  1053.     movem.l    d0-d7/a0-a6,-(sp)
  1054.  
  1055.     lea    curpal1,a3        ;palette 1
  1056.     move.l    #palette,a1
  1057.     bsr.s    gracfrm
  1058.  
  1059.     lea    curpal2,a3        ;palette 2 (dpl)
  1060.     move.l    #16*4+palette,a1
  1061.     bsr.s    gracfrm
  1062.     
  1063.     bsr    palctr            ;palette-buffer to copper
  1064. grac.end
  1065.     movem.l    (sp)+,d0-d7/a0-a6
  1066.     rts
  1067.         
  1068.     ;moves palette from picture to palette-buffer
  1069.  
  1070. gracfrm
  1071.     movem.l    d0-d7/a0-a6,-(sp)
  1072.     tst.l    (a3)            ;palette aanwezig ?
  1073.     beq.s    gracfrm.end
  1074.  
  1075.     move.l    (a3),a2            ;current palette
  1076.     
  1077.     cmp.l    #'PALE',(a2)        ;palette ?
  1078.     bne.s    gracfrm.pict
  1079.     lea    6(a2),a0        ;palette
  1080.     move.w    4(a2),d0        ;aantal kleuren
  1081.     bra.s    gracfrm.col
  1082. gracfrm.pict
  1083.     cmp.l    #'ANIM',(a2)        ;animatie ?
  1084.     bne.s    gracfrm.noanim
  1085.  
  1086.     moveq.l    #0,d1
  1087.     move.w    pic_ani(a2),d1
  1088.     bclr    #7,d1            ;behandelbit weghalen
  1089.  
  1090.     moveq.l    #0,d3
  1091.     move.w    pic_wid(a2),d3
  1092.     lsr.w    #1,d3            ;/2
  1093.     muls    pic_hgt(a2),d3
  1094.     muls    pic_dpt(a2),d3
  1095.  
  1096.     add.l    d3,d3
  1097.  
  1098.     add.l    #pic_raw,d3
  1099.     move.l    d3,d5
  1100.  
  1101.     btst    #0,d1
  1102.     bne.s    gracfrm.buf2
  1103.     moveq.l    #0,d5
  1104. gracfrm.buf2
  1105.     add.l    d5,a2
  1106. gracfrm.noanim
  1107.     lea    pic_pal(a2),a0        ;palette
  1108.     move.w    pic_palnum(a2),d0
  1109.  
  1110.     tst.w    d0            ;0 planes ?
  1111.     beq.s    gracfrm.end
  1112. gracfrm.col
  1113. gracfrm.fa
  1114.     move.l    (a0)+,(a1)+
  1115.     dbra    d0,gracfrm.fa
  1116. gracfrm.end
  1117.     movem.l    (sp)+,d0-d7/a0-a6
  1118.     rts
  1119.     
  1120.     ;handles colorcycling in the palette-buffer
  1121.  
  1122. palcycctr
  1123.     movem.l    d0-d7/a0-a6,-(sp)
  1124.  
  1125.     move.l    curpic1,a2        ;current raw
  1126.     cmp.l    #0,a2
  1127.     beq.s    palcycctr.qb
  1128.     lea    cycdel1,a3        ;cycle delays
  1129.     move.l    #paltab,a4
  1130.     bsr    palcyc
  1131. palcycctr.qb
  1132.     move.l    curpic2,a2        ;current raw
  1133.     cmp.l    #0,a2
  1134.     beq.s    palcycctr.c
  1135.     lea    cycdel2,a3        ;cycle delays
  1136.     move.l    #16*2+paltab,a4
  1137.     bsr    palcyc
  1138. palcycctr.c
  1139.     movem.l    (sp)+,d0-d7/a0-a6
  1140.     rts
  1141.     
  1142.     ;copies palette-buffer to copper
  1143.  
  1144. palctr
  1145.     movem.l    d0-d7/a0-a6,-(sp)
  1146.  
  1147.     lea    gracprcol,a1        ;AGA
  1148.     move.l    #palette,a0
  1149.     move.l    #paltab,a2
  1150.     move.w    #8-1,d6
  1151. palctr.e
  1152.     move.w    #32-1,d7
  1153. palctr.d
  1154.     move.w    (a2)+,d0            ;get cycle-position
  1155.     move.w    (a0,d0),6(a1)            ;high RGB bits
  1156.     move.w    2(a0,d0),((32+1)*4)+6(a1)    ;low RGB bits
  1157.     add.l    #4,a1
  1158.     dbra    d7,palctr.d
  1159.     add.l    #((32+2)*4),a1
  1160.     dbra    d6,palctr.e
  1161. palctr.end
  1162.     movem.l    (sp)+,d0-d7/a0-a6
  1163.     rts
  1164.  
  1165.     ;reset palette tabel, for proper color cycling
  1166.  
  1167. paltabres
  1168.     movem.l    d0-d7/a0-a6,-(sp)
  1169.     lea    paltab,a0
  1170.     clr.l    d0
  1171.     move.w    #256-1,d1
  1172. paltabres.a
  1173.     move.w    d0,(a0)+
  1174.     add.w    #4,d0            ;aga color words, high RGB + low RGB
  1175.     dbra    d1,paltabres.a
  1176. paltabres.end
  1177.     movem.l    (sp)+,d0-d7/a0-a6
  1178.     rts
  1179.  
  1180.     ;colorcyclinghandling of a palette
  1181.  
  1182. palcyc
  1183.     movem.l    d0-d7/a0-a6,-(sp)
  1184.     move.w    #4-1,d7            ;4 cycles
  1185. palcyc.d
  1186.     tst.w    (a3)+            ;delay klaar ?
  1187.     bne.s    palcyc.c
  1188.     
  1189.     moveq.l    #0,d1
  1190.     move.b    pic_cycstr(a2),d1    ;start color
  1191.     lsl.b    #1,d1        ;*2
  1192.  
  1193.     moveq.l    #0,d2
  1194.     move.b    pic_cycend(a2),d2    ;end color
  1195.     lsl.b    #1,d2        ;*2
  1196.  
  1197.     moveq.l    #0,d3
  1198.     move.b    pic_cycadd(a2),d3    ;richting
  1199.  
  1200.     move.l    a4,a0            ;palette pointer
  1201.     move.l    a0,a1
  1202.     add.l    d1,a0            ;startcolor
  1203.     add.l    d2,a1            ;endcolor
  1204.     
  1205.     cmp.b    #1,d3            ;omhoog
  1206.     beq.s    palcyc.up    
  1207.     cmp.b    #3,d3            ;omlaag
  1208.     beq.s    palcyc.down
  1209.     bra.s    palcyc.i
  1210.  
  1211. palcyc.up                ;kleuren copieren
  1212.     move.w    (a1),d4            ;laatst color bewaren
  1213. palcyc.f                ;kleuren copieren
  1214.     cmp.l    a0,a1
  1215.     beq.s    palcyc.fa
  1216.     move.w    -(a1),2(a1)
  1217.     bra.s    palcyc.f
  1218. palcyc.fa
  1219.     move.w    d4,(a1)
  1220.     bra.s    palcyc.g    
  1221.     
  1222. palcyc.down
  1223.     move.w    (a0),d4            ;laatst color bewaren
  1224. palcyc.h                ;kleuren copieren
  1225.     cmp.l    a0,a1
  1226.     beq.s    palcyc.ha
  1227.     move.w    2(a0),(a0)+
  1228.     bra.s    palcyc.h
  1229. palcyc.ha
  1230.     move.w    d4,(a1)
  1231.  
  1232. palcyc.g
  1233.     move.b    pic_cycspd(a2),-1(a3)    ;delay zetten
  1234.     bra.s    palcyc.i
  1235. palcyc.c
  1236.     sub.w    #1,-2(a3)        ;cycle delay aftellen
  1237. palcyc.i
  1238.     add.l    #4,a2            ;next cycle info
  1239.     dbra    d7,palcyc.d
  1240.  
  1241. palcyc.qb
  1242.     movem.l    (sp)+,d0-d7/a0-a6
  1243.     rts
  1244.  
  1245.  
  1246.  
  1247. ;    SECTION    variabelen,DATA_c
  1248.  
  1249.     cnop    0,2
  1250. curtsk        dc.l    0
  1251. tskpri        dc.l    0
  1252. duplok        dc.l    0
  1253. inttel        dc.l    0
  1254. intdel        dc.l    0
  1255.  
  1256. form        dc.l    0
  1257. ifffil        dc.l    0
  1258. intvbold    dc.l    0
  1259. inttbeold    dc.l    0
  1260. patpos        dc.l    0
  1261. gfxlib        dc.l    0
  1262. doslib        dc.l    0
  1263. wbview      dc.l    0
  1264. mt_data        dc.l    0
  1265. memvid        dc.l    0
  1266. oldcprlist    dc.l    0
  1267. hogscr        dc.l    vew_hgt
  1268.  
  1269. inspos        dc.l    -1
  1270. anispd1        dc.w    1    ;nooit op 0 !
  1271. anispd2        dc.w    1
  1272.  
  1273.         cnop    0,2
  1274. varclr.s            ;start wissen
  1275. oldrot        dc.l    0
  1276. curpic        dc.l    0
  1277. curfrm        dc.l    0
  1278. cycdel1        ds.w    4
  1279. cycdel2        ds.w    4
  1280.  
  1281. rotinf1        dc.w    0
  1282. rotinf2        dc.w    0
  1283.  
  1284. effspd        dc.w    0
  1285. efflop        dc.b    0
  1286. anilop1        dc.b    0
  1287. anilop2        dc.b    0
  1288. anipal1        dc.b    0
  1289. anipal2        dc.b    0
  1290. rotdpl        dc.b    1
  1291. rottrg        dc.b    0
  1292. dplctr        dc.b    0
  1293.         cnop    0,2
  1294.  
  1295. insdat        ds.l    4
  1296. inspri        dc.l    0
  1297. instel        dc.w    0
  1298.  
  1299. cureff        dc.l    0
  1300. efftel        dc.w    0
  1301.  
  1302. curpal1        dc.l    0
  1303. curpal2        dc.l    0
  1304. currot1        dc.l    0
  1305. currot2        dc.l    0
  1306. curpic1        dc.l    0
  1307. curpic2        dc.l    0
  1308. anitel1        dc.w    0
  1309. anitel2        dc.w    0
  1310. curfrm1        dc.l    0
  1311. curfrm2        dc.l    0
  1312. oldfrm1        dc.l    0
  1313. oldfrm2        dc.l    0
  1314.  
  1315. varclr.e
  1316.         dc.l    0            ;wisruimte
  1317.     
  1318. varclr.ql    equ    varclr.e-varclr.s    ;wislengte
  1319.     
  1320. ntscmode    dc.b    0
  1321. end        dc.b    0
  1322.  
  1323. pronam    dc.b    'VideoTracker',0
  1324.     cnop    0,2
  1325. dosnam    dc.b    'dos.library',0
  1326.     cnop    0,4
  1327. gfxnam    dc.b    'graphics.library',0
  1328.     cnop    0,4
  1329.     
  1330.     cnop    0,4
  1331. gra.s            ;copperlist edit buffer
  1332. gracprscr
  1333.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1334. gracprbpl
  1335.     dc.w    $100,$0000,$102,$0000,$104,$0020
  1336.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1337. gracprpln
  1338.     dc.w    $e0,$0000,$e2,$0000    ;1
  1339.     dc.w    $e4,$0000,$e6,$0000    ;2
  1340.     dc.w    $e8,$0000,$ea,$0000    ;3
  1341.     dc.w    $ec,$0000,$ee,$0000    ;4
  1342.     dc.w    $f0,$0000,$f2,$0000    ;5
  1343.     dc.w    $f4,$0000,$f6,$0000    ;6
  1344.     dc.w    $f8,$0000,$fa,$0000    ;7
  1345.     dc.w    $fc,$0000,$fe,$0000    ;8
  1346. gracprcol
  1347.     dc.w    $106,$0000
  1348.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1349.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1350.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1351.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1352.     dc.w    $106,$0200
  1353.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1354.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1355.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1356.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1357.  
  1358.     dc.w    $106,$2000
  1359.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1360.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1361.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1362.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1363.     dc.w    $106,$2200
  1364.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1365.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1366.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1367.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1368.  
  1369.     dc.w    $106,$4000
  1370.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1371.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1372.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1373.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1374.     dc.w    $106,$4200
  1375.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1376.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1377.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1378.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1379.  
  1380.     dc.w    $106,$6000
  1381.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1382.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1383.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1384.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1385.     dc.w    $106,$6200
  1386.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1387.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1388.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1389.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1390.  
  1391.     dc.w    $106,$8000
  1392.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1393.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1394.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1395.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1396.     dc.w    $106,$8200
  1397.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1398.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1399.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1400.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1401.  
  1402.     dc.w    $106,$a000
  1403.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1404.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1405.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1406.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1407.     dc.w    $106,$a200
  1408.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1409.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1410.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1411.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1412.  
  1413.     dc.w    $106,$c000
  1414.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1415.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1416.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1417.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1418.     dc.w    $106,$c200
  1419.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1420.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1421.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1422.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1423.  
  1424.     dc.w    $106,$e000
  1425.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1426.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1427.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1428.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1429.     dc.w    $106,$e200
  1430.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1431.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1432.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1433.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1434.  
  1435.     dc.w    $106,$1000
  1436.  
  1437. cprjmp
  1438.     dc.w    $080,0,$082,0
  1439. gra.e
  1440. gra.ql    equ    gra.e-gra.s        ;block lengte
  1441.  
  1442. cpr                    ;real copperlist
  1443.     dc.w    $0001,$fffe
  1444.     dc.w    $09c,$8001        ;tbeint
  1445. cprspr
  1446.     dc.w    $120,$0000,$122,$0000
  1447.     dc.w    $124,$0000,$126,$0000
  1448.     dc.w    $128,$0000,$12a,$0000
  1449.     dc.w    $12c,$0000,$12e,$0000
  1450.     dc.w    $130,$0000,$132,$0000
  1451.     dc.w    $134,$0000,$136,$0000
  1452.     dc.w    $138,$0000,$13a,$0000
  1453.     dc.w    $13c,$0000,$13e,$0000
  1454.  
  1455. cprbuf
  1456.     dc.w    $8e,$3381,$90,$81c1,$92,$003c,$94,$00d0
  1457.     dc.w    $100,$9000,$102,$0000,$104,$0020
  1458.     dc.w    $108,$0000,$10a,$0000,$1fc,$0003
  1459.  
  1460.     dc.w    $e0,$0000,$e2,$0000    ;0
  1461.     dc.w    $e4,$0000,$e6,$0000    ;1
  1462.     dc.w    $e8,$0000,$ea,$0000    ;2
  1463.     dc.w    $ec,$0000,$ee,$0000    ;3
  1464.     dc.w    $f0,$0000,$f2,$0000    ;4
  1465.     dc.w    $f4,$0000,$f6,$0000    ;5
  1466.     dc.w    $f8,$0000,$fa,$0000    ;6
  1467.     dc.w    $fc,$0000,$fe,$0000    ;7
  1468.  
  1469.     dc.w    $106,$0000
  1470.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1471.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1472.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1473.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1474.     dc.w    $106,$0200
  1475.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1476.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1477.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1478.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1479.  
  1480.     dc.w    $106,$2000
  1481.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1482.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1483.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1484.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1485.     dc.w    $106,$2200
  1486.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1487.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1488.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1489.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1490.  
  1491.     dc.w    $106,$4000
  1492.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1493.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1494.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1495.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1496.     dc.w    $106,$4200
  1497.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1498.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1499.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1500.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1501.  
  1502.     dc.w    $106,$6000
  1503.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1504.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1505.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1506.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1507.     dc.w    $106,$6200
  1508.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1509.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1510.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1511.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1512.  
  1513.     dc.w    $106,$8000
  1514.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1515.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1516.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1517.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1518.     dc.w    $106,$8200
  1519.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1520.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1521.      dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1522.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1523.  
  1524.     dc.w    $106,$a000
  1525.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1526.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1527.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1528.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1529.     dc.w    $106,$a200
  1530.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1531.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1532.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1533.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1534.  
  1535.     dc.w    $106,$c000
  1536.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1537.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1538.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1539.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1540.     dc.w    $106,$c200
  1541.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1542.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1543.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1544.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1545.  
  1546.     dc.w    $106,$e000
  1547.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1548.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1549.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1550.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1551.     dc.w    $106,$e200
  1552.     dc.w    $180,0,$182,0,$184,0,$186,0,$188,0,$18a,0,$18c,0,$18e,0
  1553.     dc.w    $190,0,$192,0,$194,0,$196,0,$198,0,$19a,0,$19c,0,$19e,0
  1554.     dc.w    $1a0,0,$1a2,0,$1a4,0,$1a6,0,$1a8,0,$1aa,0,$1ac,0,$1ae,0
  1555.     dc.w    $1b0,0,$1b2,0,$1b4,0,$1b6,0,$1b8,0,$1ba,0,$1bc,0,$1be,0
  1556.  
  1557.     dc.w    $106,$1000
  1558.  
  1559.     dc.w    $080,0,$082,0
  1560. cprbuf.e
  1561.  
  1562.     dc.w    $088,$0000        ;copjmp2
  1563.     dc.w    $080,0,$082,0        ;moet achter cprbck blijven !
  1564. cprbck
  1565. sprdat
  1566.     dc.w    $ffff,$fffe
  1567.  
  1568. palette        ds.l    256        ;palette 24-bits, far out !
  1569. paltab        ds.w    256        ;palette cycle-tabel
  1570.  
  1571.     cnop    0,2
  1572. var    ds.b    $300    ;variabelen voor routines
  1573.  
  1574.     
  1575. ;    SECTION    10,CODE_C
  1576.         endc
  1577.  
  1578. ; this is the routine-source
  1579. ;**********************************************************************
  1580.  
  1581. ;    a0=variabelen tabel
  1582. ;    d0=routinfo
  1583.  
  1584. ;rotbigscroll
  1585. ;ntscver
  1586.  
  1587. rots_high    equ    $8000
  1588. rots_lace    equ    $0004
  1589. rots_vew    equ    rots_high+rots_lace
  1590. rots_dpt    equ    2
  1591. rots_del    equ    0
  1592.  
  1593.         ifeq    rots_high-0
  1594. rotv_wid    equ    (48/1)        ;actual view lores
  1595.         ifd    ocs
  1596. rots_cen    equ    0
  1597.         endc
  1598.         ifnd    ocs
  1599. rots_cen    equ    8
  1600.         endc
  1601.         endc
  1602.         ifeq    rots_high-$8000
  1603.         ifd    ocs
  1604. rotv_wid    equ    (96/1)        ;actual view hires
  1605. rots_cen    equ    8
  1606.         endc
  1607.         ifnd    ocs
  1608. rotv_wid    equ    (96/1)        ;actual view hires
  1609. rots_cen    equ    0
  1610.         endc
  1611.         endc
  1612.     
  1613.         ifnd    ntscver
  1614.         ifeq    rots_lace-0
  1615. rotv_hgt    equ    290+64            ;actual view nolace
  1616.         endc
  1617.         ifeq    rots_lace-4
  1618. rotv_hgt    equ    (290*2)+64        ;actual view lace
  1619.         endc
  1620.         endc
  1621.         ifd    ntscver
  1622.         ifeq    rots_lace-0
  1623. rotv_hgt    equ    290+64-56        ;actual view nolace
  1624.         endc
  1625.         ifeq    rots_lace-4
  1626. rotv_hgt    equ    ((290-56)*2)+64        ;actual view lace
  1627.         endc
  1628.         endc
  1629.         
  1630.         ifeq    rots_vew-0        ;lo-res
  1631.  
  1632.         ifeq    rots_dpt-1
  1633.         ifnd    ntscver
  1634. rotc_hgtx    equ    160            ;maximale characterhoogte
  1635. rotc_hgty    equ    80+8            ;maximale characterhoogte
  1636. rots_scrwid    equ    (0/1)            ;aantal -bytes voor y-scroll
  1637.         endc
  1638.         ifd    ntscver
  1639. rotc_hgtx    equ    144            ;maximale characterhoogte
  1640. rotc_hgty    equ    24+8            ;maximale characterhoogte
  1641. rots_scrwid     equ    16            ;aantal -bytes voor y-scroll
  1642.         endc
  1643.         endc
  1644.  
  1645.         ifeq    rots_dpt-2
  1646. rotc_hgtx    equ    80            ;maximale characterhoogte
  1647. rotc_hgty    equ    88+8            ;maximale characterhoogte
  1648. rots_scrwid     equ    (0/1)            ;aantal -bytes voor y-scroll
  1649.         endc
  1650.  
  1651.         ifeq    rots_dpt-3
  1652.         ifnd    rotbigscroll
  1653.         ifnd    ntscver
  1654. rotc_hgtx    equ    36            ;maximale characterhoogte
  1655. rotc_hgty    equ    40+8            ;maximale characterhoogte
  1656. rots_scrwid    equ    8            ;aantal -bytes voor y-scroll
  1657.         endc
  1658.         ifd    ntscver
  1659. rotc_hgtx    equ    16            ;maximale characterhoogte
  1660. rotc_hgty    equ    16+8            ;maximale characterhoogte
  1661. rots_scrwid    equ    8            ;aantal -bytes voor y-scroll
  1662.         endc
  1663.         endc
  1664.         ifd    rotbigscroll
  1665.         ifnd    ntscver
  1666. rotc_hgtx    equ    80            ;maximale characterhoogte
  1667. rotc_hgty    equ    88+8            ;maximale characterhoogte
  1668. rots_scrwid    equ    0            ;aantal -bytes voor y-scroll
  1669.         endc
  1670.         ifd    ntscver
  1671. rotc_hgtx    equ    110            ;maximale characterhoogte
  1672. rotc_hgty    equ    88+8            ;maximale characterhoogte
  1673. rots_scrwid    equ    0            ;aantal -bytes voor y-scroll
  1674.         endc
  1675.         endc
  1676.         endc
  1677.  
  1678.         ifeq    rots_dpt-4
  1679.         ifnd    ntscver
  1680. rotc_hgtx    equ    56            ;maximale characterhoogte
  1681. rotc_hgty    equ    56+8            ;maximale characterhoogte
  1682. rots_scrwid    equ    (0/1)            ;aantal -bytes voor y-scroll
  1683.         endc
  1684.         ifd    ntscver
  1685. rotc_hgtx    equ    40            ;maximale characterhoogte
  1686. rotc_hgty    equ    40+8            ;maximale characterhoogte
  1687. rots_scrwid    equ    (0/1)            ;aantal -bytes voor y-scroll
  1688.         endc
  1689.         endc
  1690.  
  1691.         ifeq    rots_dpt-5
  1692.         ifnd    ntscver
  1693. rotc_hgtx    equ    36            ;maximale characterhoogte
  1694. rotc_hgty    equ    40+8            ;maximale characterhoogte
  1695. rots_scrwid    equ    (0/1)            ;aantal -bytes voor y-scroll
  1696.         endc
  1697.         ifd    ntscver
  1698. rotc_hgtx    equ    32            ;maximale characterhoogte
  1699. rotc_hgty    equ    40+8            ;maximale characterhoogte
  1700. rots_scrwid    equ    (0/1)            ;aantal -bytes voor y-scroll
  1701.         endc
  1702.         endc
  1703.         endc
  1704.     
  1705.         ifeq    rots_vew-$8004        ;hi-res interlace
  1706.         ifeq    rots_dpt-1
  1707. rotc_hgtx    equ    80            ;maximale characterhoogte
  1708. rotc_hgty    equ    56+8            ;maximale characterhoogte
  1709. rots_scrwid    equ    16            ;aantal -bytes voor y-scroll
  1710.         endc
  1711.  
  1712.         ifeq    rots_dpt-2
  1713.         ifnd    ntscver
  1714. rotc_hgtx    equ    72            ;maximale characterhoogte
  1715. rotc_hgty    equ    72+8            ;maximale characterhoogte
  1716. rots_scrwid    equ    16            ;aantal -bytes voor y-scroll
  1717.         endc
  1718.         ifd    ntscver
  1719. rotc_hgtx    equ    48            ;maximale characterhoogte
  1720. rotc_hgty    equ    48+8            ;maximale characterhoogte
  1721. rots_scrwid    equ    16            ;aantal -bytes voor y-scroll
  1722.         endc
  1723.         endc
  1724.  
  1725.         ifeq    rots_dpt-3
  1726. rotc_hgtx    equ    48            ;maximale characterhoogte
  1727. rotc_hgty    equ    48+8            ;maximale characterhoogte
  1728. rots_scrwid    equ    16            ;aantal -bytes voor y-scroll
  1729.         endc
  1730.  
  1731.         ifeq    rots_dpt-4
  1732. rotc_hgtx    equ    48            ;maximale characterhoogte
  1733. rotc_hgty    equ    48+8            ;maximale characterhoogte
  1734. rots_scrwid    equ    16            ;aantal -bytes voor y-scroll
  1735.         endc
  1736.         endc
  1737.     
  1738.         ifd    ocs
  1739. rotc_wid    equ    ((rotc_hgtx*2)+15)/16*2    ;maximale characterbreedte
  1740.         endc
  1741.         ifnd    ocs
  1742. rotc_wid    equ    ((rotc_hgtx*2)+15)/64*8    ;maximale characterbreedte
  1743.         endc
  1744.  
  1745. rots_hgt    equ    (rotv_hgt+(2*rotc_hgty))
  1746. rots_wid    equ    (rotv_wid+(2*rotc_wid))
  1747. rots_blit    equ    8            ;aantal -bytes voor y-scroll
  1748.  
  1749.  
  1750.     SECTION    3,CODE_C
  1751.  
  1752. rot
  1753.     ifd    ocs
  1754.     dc.l    'ROUT'
  1755.     endc
  1756.     ifnd    ocs
  1757.     dc.l    'ROT2'
  1758.     endc
  1759.     movem.l    d3-d7/a1-a6,-(sp)
  1760.  
  1761.     lea    ($dff000).l,a6    ;hardware
  1762.     lea    rot,a5        ;prog base
  1763.  
  1764. ;    ifeq    rots_dpt-1
  1765. ;    eor.l    #rotpic2-rotpic1,rotdub-rot(a5)
  1766. ;    endc
  1767.     
  1768.     move.l    a0,rotvar-rot(a5)    ;var table
  1769.     moveq.l    #0,d1        ;info ombouwen
  1770.  
  1771.     bsr    rotfonset        ;set current font
  1772.     lea    var_txt1(a0),a0
  1773.  
  1774.     move.l    #0,d2        ;test bit
  1775.     lea    rottnew,a1        ;new text
  1776.     lea    rottpos,a2        ;pos text
  1777.     lea    rotscr,a4        ;rout scroll
  1778.     bsr    rotctr
  1779.  
  1780.     lea    rotpic1,a0
  1781.     add.l    rotdub-rot(a5),a0
  1782.     moveq.l    #0,d1
  1783.  
  1784. ;    ifne    rots_dpt-1
  1785.     eor.l    #rotpic2-rotpic1,rotdub-rot(a5)
  1786. ;    endc
  1787.     
  1788.     move.l    #rots_del,d2    ;interrupt delay
  1789.     cmp.l    #3,rotmod-rot(a5)    ;y scroll ?
  1790.     beq    rotstr.y
  1791.     cmp.l    #4,rotmod-rot(a5)    ;y scroll ?
  1792.     beq    rotstr.y
  1793.     moveq.l    #0,d2        ;no delay
  1794. rotstr.y
  1795.     movem.l    (sp)+,d3-d7/a1-a6
  1796.     rts
  1797.  
  1798. rotctr
  1799.     move.l    (a0)+,d0
  1800.     tst.l    d0
  1801.     beq    rotctr.end        ;leeg ?
  1802.  
  1803.     cmp.l    (a1),d0        ;zelfde text ?
  1804.     beq    rotctr.aa
  1805.     move.l    d0,(a1)        ;nieuwe text
  1806.     move.l    d0,(a2)        ;start text
  1807. rotctr.aa
  1808.     jsr    (a4)        ;scrollen
  1809. rotctr.end
  1810.     rts
  1811.     
  1812. rotchg                ;change font (a2 komt terug)
  1813.     movem.l    d0-d7/a0/a1/a3-a6,-(sp)
  1814.  
  1815.     move.b    (a2)+,d1
  1816.     bsr    rotnum        ;a2=string = d0=nummer
  1817.  
  1818.     cmp.b    #'F',d1
  1819.     beq    rotchg.bb
  1820.     cmp.b    #'f',d1
  1821.     beq    rotchg.bb
  1822.  
  1823.     cmp.b    #'C',d1
  1824.     beq    rotchg.c
  1825.     cmp.b    #'c',d1
  1826.     beq    rotchg.c
  1827.  
  1828.     cmp.b    #'S',d1
  1829.     beq    rotchg.d
  1830.     cmp.b    #'s',d1
  1831.     beq    rotchg.d
  1832.  
  1833.     cmp.b    #'M',d1
  1834.     beq    rotchg.e
  1835.     cmp.b    #'m',d1
  1836.     beq    rotchg.e
  1837.  
  1838.     cmp.b    #'X',d1
  1839.     beq    rotchg.f
  1840.     cmp.b    #'x',d1
  1841.     beq    rotchg.f
  1842.  
  1843.     cmp.b    #'Y',d1
  1844.     beq    rotchg.g
  1845.     cmp.b    #'y',d1
  1846.     beq    rotchg.g
  1847.  
  1848.     cmp.b    #'E',d1
  1849.     beq    rotchg.h
  1850.     cmp.b    #'e',d1
  1851.     beq    rotchg.h
  1852.  
  1853.     cmp.b    #'D',d1
  1854.     beq    rotchg.i
  1855.     cmp.b    #'d',d1
  1856.     beq    rotchg.i
  1857.  
  1858.     bra    rotchg.end
  1859.  
  1860. rotchg.bb                ;change font
  1861. ;    lsl.l    #2,d0        ;*4
  1862.     add.l    d0,d0
  1863.     add.l    d0,d0
  1864.     
  1865.     move.l    d0,rotc_fonnum-rot(a5)
  1866.     bsr    rotfonset
  1867.     bra    rotchg.end
  1868.     
  1869. rotchg.c                ;change color
  1870.     move.l    d0,rotcol-rot(a5)
  1871.     bra    rotchg.end
  1872.     
  1873. rotchg.d                ;change speed
  1874.     move.l    d0,rotspd-rot(a5)
  1875.     bra    rotchg.end
  1876.     
  1877. rotchg.e                ;change mode
  1878.     move.l    d0,rotmod-rot(a5)
  1879.     bra    rotchg.end
  1880.     
  1881. rotchg.f                ;change x pos
  1882.     add.l    #rotc_wid*8,d0
  1883.     move.l    d0,rotpsx-rot(a5)
  1884.     bra    rotchg.end
  1885.     
  1886. rotchg.g                ;change y pos
  1887.     add.l    #rotc_hgty,d0
  1888.     move.l    #rotv_hgt+rotc_hgty,d1    ;max check
  1889.     cmp.w    d1,d0
  1890.     ble    rotchg.ga
  1891.     move.l    d1,d0
  1892. rotchg.ga
  1893.     move.l    d0,rotpsy-rot(a5)
  1894.     bra    rotchg.end
  1895.     
  1896. rotchg.h                ;screenclear
  1897. ;    lea    rotpln1,a1
  1898. ;    move.l    #rots_hgt*rots_wid*rots_dpt,d0
  1899. ;    move.l    rotvar-rot(a5),a0    ;vartab
  1900. ;    move.l    var_gfxlib(a0),a6    ;graphics lib halen
  1901. ;    move.l    #$0000,d1        ;fill ?
  1902. ;    movem.l    d0-d7/a0-a6,-(sp)
  1903. ;    jsr    -$12c(a6)        ;blitter clear scherm 1
  1904. ;    movem.l    (sp)+,d0-d7/a0-a6
  1905. ;    bsr    rotwit        ;blitwait
  1906. ;    lea    rotpln1,a1
  1907. ;    add.l    #rotpln2-rotpln1,a1
  1908. ;    movem.l    d0-d7/a0-a6,-(sp)
  1909. ;    jsr    -$12c(a6)        ;blitter clear scherm 1
  1910. ;    movem.l    (sp)+,d0-d7/a0-a6
  1911. ;    bsr    rotwit        ;blitwait
  1912.  
  1913.     lea    rotpln1,a0
  1914.     add.l    #(rots_wid-rotv_wid)/2,a0    ;xstart
  1915.     add.l    #rotc_hgty*rots_wid*rots_dpt,a0    ;ystart
  1916.  
  1917.     move.l    rotdub-rot(a5),d0
  1918.     add.l    d0,a0            ;destination
  1919.  
  1920.     move.l    #rotv_hgt/rots_blit,d5 ;in rots_blit stappen
  1921.  
  1922.     muls    #rots_dpt,d5
  1923.     move.l    d5,d1
  1924.     muls    #rots_wid,d1
  1925.     lsl.l    #6,d5            ;*64
  1926.     add.l    #(rotv_wid)/2,d5
  1927.  
  1928.     move.w    #0,$042(a6)
  1929.     move.w    #$100+$f0,$040(a6)
  1930.  
  1931.     move.w    #rots_wid-rotv_wid,$064(a6)
  1932.     move.w    #rots_wid-rotv_wid,$066(a6)
  1933.  
  1934. ;    move.w    #0,$070(a6)        ;c dat
  1935. ;    move.w    #0,$072(a6)        ;b dat
  1936.  
  1937.     move.w    #0,$074(a6)        ;a dat
  1938.  
  1939.     move.l    #0,$044(a6)        ;mask
  1940.  
  1941.     move.w    #rots_blit-1,d0
  1942. rotchg.blit
  1943.     move.l    a0,$054(a6)        ;destination
  1944.     move.w    d5,$058(a6)
  1945.     bsr    rotwit
  1946.  
  1947.     add.l    d1,a0
  1948.     dbra    d0,rotchg.blit
  1949.  
  1950.     bra    rotchg.end
  1951.  
  1952. rotchg.i                ;set delay
  1953.     move.l    d0,rotdel-rot(a5)
  1954.     bra    rotchg.end
  1955.     
  1956. rotchg.end
  1957.     movem.l    (sp)+,d0-d7/a0/a1/a3-a6
  1958.     rts
  1959.  
  1960. rotchgc                ;change font (a2 komt terug)
  1961.     movem.l    d0-d7/a0/a1/a3-a6,-(sp)
  1962.  
  1963.     move.b    (a2)+,d1
  1964.     bsr    rotnum
  1965.  
  1966.     cmp.b    #'F',d1        ;fontchange
  1967.     beq    rotchgc.bb
  1968.     cmp.b    #'f',d1
  1969.     beq    rotchgc.bb
  1970.  
  1971.     cmp.b    #'R',d1        ;reverse centreren
  1972.     beq    rotchgc.j
  1973.     cmp.b    #'r',d1
  1974.     beq    rotchgc.j
  1975.  
  1976.     bra    rotchgc.end
  1977.  
  1978. rotchgc.bb                ;change font
  1979. ;    lsl.l    #2,d0        ;*4
  1980.     add.l    d0,d0
  1981.     add.l    d0,d0
  1982.  
  1983.     move.l    d0,rotc_fonnum-rot(a5)
  1984.     bsr    rotfonset
  1985.     bra    rotchgc.end
  1986.     
  1987. rotchgc.j                ;reverse centering
  1988.     add.l    #rotc_wid*8,d0
  1989.     move.l    d0,rotrev-rot(a5)
  1990.     bra    rotchgc.end
  1991.     
  1992. rotchgc.end
  1993.     movem.l    (sp)+,d0-d7/a0/a1/a3-a6
  1994.     rts
  1995.  
  1996. rotfonset                ;set current font
  1997.     movem.l    d0-d7/a0-a6,-(sp)
  1998.  
  1999.     move.l    rotvar-rot(a5),a1    ;vartab
  2000.     add.l    rotc_fonnum-rot(a5),a1    ;fontnummer
  2001.     move.l    var_fon1(a1),a2    ;fonttabel
  2002.  
  2003.     clr.l    rotc_fon-rot(a5)    ;huidige font wissen
  2004.  
  2005.     cmp.l    #'FONT',(a2)    ;is ut fontje ?
  2006.     bne    rotfonset.end
  2007.  
  2008.     move.l    a2,rotc_fon-rot(a5)    ;huidige font zetten
  2009.  
  2010. ;    move.l    fon_wid(a2),rotc_maxx-rot(a5)
  2011. rotfonset.bb
  2012.  
  2013. rotfonset.end
  2014.     movem.l    (sp)+,d0-d7/a0-a6
  2015.     rts
  2016.  
  2017. rotscr
  2018.     movem.l    d0-d7/a0-a6,-(sp)
  2019.  
  2020.     tst.l    rotdel-rot(a5)    ;delay ?
  2021.     beq    rotscr.nodel
  2022.     sub.l    #1,rotdel-rot(a5)    ;delay aftellen
  2023. rotscr.nodel
  2024.  
  2025.     tst.l    rottnew-rot(a5)    ;leeg text ?
  2026.     bne    rotscr.a
  2027.     tst.l    rottpos-rot(a5)    ;leeg text ?
  2028.     beq    rotscr.end
  2029.     clr.l    rottpos-rot(a5)
  2030.     bra    rotscr.end
  2031.  
  2032. rotscr.a
  2033.     cmp.l    #3,rotmod-rot(a5)    ;y scroll ?
  2034.     beq    rotscr.y
  2035.     cmp.l    #4,rotmod-rot(a5)    ;y scroll ?
  2036.     bne    rotscr.noy
  2037. rotscr.y
  2038.     bsr    roty
  2039.     bra    rotscr.end
  2040. rotscr.noy
  2041.     cmp.l    #5,rotmod-rot(a5)    ;page ?
  2042.     bne    rotscr.nop
  2043.     bsr    rotp
  2044.     bra    rotscr.end
  2045. rotscr.nop
  2046.     clr.l    rotchrn-rot(a5)    ;geen geblerk met y
  2047.     bsr    rotx        ;x scroll
  2048. rotscr.end
  2049.     movem.l    (sp)+,d0-d7/a0-a6
  2050.     rts
  2051.     
  2052.  
  2053.  
  2054.  
  2055.  
  2056. rotp
  2057.     movem.l    d0-d7/a0-a6,-(sp)        ;page
  2058.     
  2059.     tst.l    rotc_fon-rot(a5)        ;font leeg ?
  2060.     beq    rotp.end
  2061.     move.l    rotc_fon-rot(a5),a1
  2062.  
  2063.     lea    rotpln1,a2
  2064.     add.l    #(rots_wid-rotv_wid)/2,a2;xstart
  2065.     add.l    #rotc_hgty*rots_wid*rots_dpt,a2    ;ystart
  2066.     move.l    a2,a0            ;destination
  2067.  
  2068.     move.l    rotdub-rot(a5),d0
  2069.     add.l    d0,a0            ;destination
  2070.     eor.l    #rotpic2-rotpic1,d0
  2071.     add.l    d0,a2            ;source
  2072.  
  2073.     move.l    #rotv_hgt/rots_blit,d5 ;in rots_blit stappen
  2074.  
  2075.     muls    #rots_dpt,d5
  2076.     move.l    d5,d1
  2077.     muls    #rots_wid,d1
  2078.     lsl.l    #6,d5            ;*64
  2079.     add.l    #(rotv_wid)/2,d5
  2080.  
  2081. ;    move.w    #$4000,$09a(a6)    ;masterinterrupt
  2082.  
  2083.     move.w    #0,$042(a6)
  2084.     move.w    #$900+$f0,$040(a6)
  2085.  
  2086.     move.w    #rots_wid-rotv_wid,$064(a6)
  2087.     move.w    #rots_wid-rotv_wid,$066(a6)
  2088.     move.w    #%1111111111111111,$044(a6)
  2089.     move.w    #%1111111111111111,$046(a6)
  2090.  
  2091.     move.w    #rots_blit-1,d0
  2092. rotp.blit
  2093.     move.l    a2,$050(a6)        ;source
  2094.     move.l    a0,$054(a6)        ;destination
  2095.     move.w    d5,$058(a6)
  2096.     bsr    rotwit
  2097. ;    move.w    #$c000,$09a(a6)    ;masterinterrupt
  2098.  
  2099.     add.l    d1,a0
  2100.     add.l    d1,a2
  2101.     dbra    d0,rotp.blit
  2102.  
  2103.     tst.l    rotdel-rot(a5)    ;delay ?
  2104.     bne    rotp.end
  2105.  
  2106. rotp.char
  2107.     move.l    rottpos-rot(a5),a2    ;textpos
  2108.     move.l    #8,rotmaxr-rot(a5)    ;max regelhoogte wissen
  2109.  
  2110.     lea    fon_widtab(a1),a3
  2111.     moveq.l    #0,d1        ;text lengte
  2112.     moveq.l    #0,d2        ;aantal chars
  2113.     moveq.l    #0,d3        ;reverse
  2114. rotp.a                ;text lengte tellen
  2115.     tst.b    (a2)+        ;einde text ?
  2116.     beq    rotp.bb
  2117.     cmp.b    #$a,-1(a2)
  2118.     beq    rotp.bb
  2119.  
  2120.     moveq.l    #0,d7
  2121.     move.b    -1(a2),d7
  2122.     cmp.b    #'_',d7
  2123.     bne    rotp.nocom
  2124.  
  2125.     bsr    rotchgc        ;handle command
  2126.  
  2127.     tst.l    rotrev-rot(a5)    ;reverse centreren ?
  2128.     beq    rotp.norev
  2129.     move.l    rotrev-rot(a5),d0    ;reverse punt
  2130.     clr.l    rotrev-rot(a5)    ;reverse wissen
  2131.     sub.l    d1,d0        ;-huidige lengte
  2132.     cmp.w    #0,d0
  2133.     bge    rotp.revk
  2134.     moveq.l    #0,d0
  2135. rotp.revk
  2136.     move.l    d0,d3
  2137.  
  2138. rotp.norev
  2139.     tst.l    rotc_fon-rot(a5)    ;font opnieuw halen
  2140.     beq    rotp.end
  2141.     move.l    rotc_fon-rot(a5),a1
  2142.     lea    fon_widtab(a1),a3
  2143.     bra    rotp.a
  2144.  
  2145. rotp.nocom
  2146.     move.l    fon_hgt(a1),d0
  2147.     cmp.w    2+rotmaxr-rot(a5),d0    ;maxy check
  2148.     blt    rotp.notbigger2
  2149.     move.l    d0,rotmaxr-rot(a5)
  2150. rotp.notbigger2
  2151.  
  2152. ;    lsl.l    #1,d7
  2153.     add.l    d7,d7
  2154.  
  2155.     add.w    (a3,d7),d1        ;breedte karakter optellen
  2156.     add.l    #1,d2        ;aantal karakters
  2157.     bra    rotp.a
  2158.  
  2159.  
  2160. rotp.bb
  2161.     cmp.l    #(rotv_wid)*8,d1    ;beeld breedte
  2162.     ble    rotp.cx
  2163.     move.l    #(rotv_wid)*8,d1
  2164. rotp.cx
  2165.     tst.l    d3        ;reverse centreren ?
  2166.     beq    rotp.mid 
  2167.     move.l    d3,rotpsx-rot(a5)
  2168.     bra    rotp.rev
  2169.  
  2170. rotp.mid
  2171.     move.l    #(rots_wid+rots_cen)*4,d5    ;beeld breedte
  2172.     lsr.l    #1,d1        ;/2
  2173.     sub.l    d1,d5        ;xpos
  2174.     move.l    d5,rotpsx-rot(a5)
  2175. rotp.rev
  2176.  
  2177.     move.l    d2,rotchrn-rot(a5)    ;aantal characters
  2178.     move.l    rotmaxr-rot(a5),d0    ;hoogte regel
  2179.     move.l    rotspd-rot(a5),d1    ;snelheid
  2180.     add.l    #1,d1
  2181.     divs    d1,d0        ;hoogte/snelheid
  2182.     and.l    #$ffff,d0
  2183.     divs    d0,d2        ;aantal chars/(hoogte/snelheid)
  2184.     add.w    #1,d2
  2185.     move.w    d2,2+rotchrvb-rot(a5)    ;aantal per vb
  2186.  
  2187.     clr.l    rotchrp-rot(a5)
  2188. rotp.print
  2189.     lea    fon_widtab(a1),a3
  2190.  
  2191.     lea    rotpln1,a0        ;text printen
  2192.     add.l    rotdub-rot(a5),a0
  2193.  
  2194.     move.l    rotchrvb-rot(a5),d1    ;aantal chars per keer
  2195.     move.l    rottpos-rot(a5),a2    ;textpos
  2196.     move.l    rotchrp-rot(a5),d3    ;hoogte aanpassing
  2197.  
  2198.     move.l    rotspd-rot(a5),d0
  2199.     add.l    #1,d0
  2200.     muls    d0,d3
  2201.  
  2202.     add.l    #1,rotchrp-rot(a5)
  2203. rotp.c
  2204.     tst.b    (a2)+
  2205.     beq    rotp.gb
  2206.     cmp.b    #$a,-1(a2)
  2207.     beq    rotp.d
  2208.  
  2209.     moveq.l    #0,d7
  2210.     move.b    -1(a2),d7
  2211.  
  2212.     cmp.b    #'_',d7
  2213.     bne    rotp.nocom2
  2214.     bsr    rotchg        ;handle command
  2215.  
  2216.     cmp.l    #5,rotmod-rot(a5)    ;andere mode ?
  2217.     bne    rotp.reset
  2218.  
  2219.  
  2220.     tst.l    rotc_fon-rot(a5)    ;font opnieuw halen
  2221.     beq    rotp.end
  2222.     move.l    rotc_fon-rot(a5),a1
  2223.     lea    fon_widtab(a1),a3    ;breedte opnieuw halen
  2224.     bra    rotp.c
  2225. rotp.nocom2
  2226.     move.l    d7,d2
  2227.  
  2228. ;    lsl.l    #1,d2
  2229.     add.l    d2,d2
  2230.     
  2231.     tst.w    (a3,d2)        ;karakter leeg ?
  2232.     beq    rotp.c
  2233.  
  2234.     move.l    fon_hgt(a1),d4
  2235.     cmp.w    2+rotmaxr-rot(a5),d4    ;maxy check
  2236.     blt    rotp.notbigger
  2237.     move.l    d4,rotmaxr-rot(a5)
  2238. rotp.notbigger
  2239.  
  2240.     move.l    rotpsx-rot(a5),d4    ;huidige x-positie
  2241.     add.w    (a3,d2),d4
  2242.  
  2243.     cmp.w    #(rotc_wid+rotv_wid)*8,d4    ;beeld breedte
  2244.     bgt    rotp.caa        ;randje bereikt ?
  2245.  
  2246.     move.l    rotmaxr-rot(a5),d6    maxy
  2247.     sub.l    fon_hgt(a1),d6    ;-huidige y
  2248.     lsr.l    #1,d6        ;/2
  2249.     add.l    rotpsy-rot(a5),d6    ;huidig ypos
  2250.     sub.l    d3,d6        ;hoogte aanpassing
  2251.  
  2252.     move.l    #rotv_hgt+rotc_hgty,d4
  2253.     cmp.l    d4,d6
  2254.     ble    rotp.nomaxy
  2255.     move.l    d4,d6
  2256. rotp.nomaxy
  2257.  
  2258.     move.l    rotcol-rot(a5),d4    ;kleur
  2259.     move.l    rotpsx-rot(a5),d5    ;huidge x-pos halen
  2260.     bsr    rotchr
  2261.  
  2262. rotp.caa
  2263.     move.w    (a3,d2),d4
  2264.     add.w    d4,2+rotpsx-rot(a5)    ;xpos
  2265.  
  2266.     sub.l    #1,rotchrn-rot(a5)    ;chars aftellen
  2267.     tst.l    rotchrn-rot(a5)
  2268.     beq    rotp.d        ;klaar voor nu
  2269.     bra    rotp.c
  2270.  
  2271. rotp.gb
  2272.     move.l    rottnew-rot(a5),rottpos-rot(a5)    ;einde scroll
  2273.     bra    rotp.end
  2274.  
  2275. rotp.d
  2276.     clr.l    rotchrvb-rot(a5)
  2277.     clr.l    rotchrn-rot(a5)
  2278.     move.l    a2,rottpos-rot(a5)
  2279.  
  2280.     move.l    rotmaxr-rot(a5),d0    ;max hoogte
  2281.     add.l    d0,rotpsy-rot(a5)    ;huidig ypos
  2282.  
  2283.     tst.l    rotdel-rot(a5)    ;geen delay=volgend regel
  2284.     beq    rotp.char
  2285.     bra    rotp.end
  2286.     
  2287. rotp.reset
  2288.     bsr    rotres
  2289. rotp.end
  2290.     movem.l    (sp)+,d0-d7/a0-a6
  2291.     rts
  2292.  
  2293.  
  2294. roty
  2295.     movem.l    d0-d7/a0-a6,-(sp)    ;y scroll
  2296.     
  2297.     tst.l    rotc_fon-rot(a5)    ;font leeg ?
  2298.     beq    roty.end
  2299.     move.l    rotc_fon-rot(a5),a1
  2300.  
  2301.     lea    rotpln1,a2
  2302.     add.l    #(rots_wid-(rotv_wid-rots_scrwid-rots_cen))/2,a2;xstart
  2303.     add.l    #rotc_hgty*rots_wid*rots_dpt,a2    ;ystart
  2304.     move.l    a2,a0            ;destination
  2305.  
  2306.     move.l    rotdub-rot(a5),d0
  2307.     add.l    d0,a0            ;destination
  2308.     eor.l    #rotpic2-rotpic1,d0
  2309.     add.l    d0,a2            ;source
  2310.  
  2311.     moveq.l    #0,d6
  2312.     tst.l    rotdel-rot(a5)    ;delay ?
  2313.     bne    roty.nomov
  2314.     move.l    rotspd-rot(a5),d6
  2315.     add.l    #1,d6
  2316. roty.nomov
  2317.  
  2318.     move.l    #(rotv_hgt+rotc_hgty)/rots_blit,d5 ;in rots_blit stappen
  2319.     move.l    d6,d0
  2320.     divs    #rots_blit,d0
  2321.     and.l    #$ffff,d0
  2322.     add.l    #1,d0
  2323.     sub.l    d0,d5
  2324.     muls    #rots_dpt,d5
  2325.     move.l    d5,d1
  2326.     muls    #rots_wid,d1
  2327.     lsl.l    #6,d5            ;*64
  2328.     add.l    #(rotv_wid-rots_scrwid)/2,d5
  2329.  
  2330.     muls    #rots_dpt*rots_wid,d6
  2331.     add.l    d6,a2
  2332.     
  2333. ;    move.w    #$4000,$09a(a6)    ;masterinterrupt
  2334.  
  2335.     move.w    #0,$042(a6)
  2336.     move.w    #$900+$f0,$040(a6)
  2337.  
  2338.     move.w    #rots_wid-(rotv_wid-rots_scrwid),$064(a6)
  2339.     move.w    #rots_wid-(rotv_wid-rots_scrwid),$066(a6)
  2340.     move.w    #%1111111111111111,$044(a6)
  2341.     move.w    #%1111111111111111,$046(a6)
  2342.  
  2343.     move.w    #rots_blit-1,d0
  2344. roty.blit
  2345.     move.l    a2,$050(a6)        ;source
  2346.     move.l    a0,$054(a6)        ;destination
  2347.     move.w    d5,$058(a6)
  2348.     bsr    rotwit
  2349. ;    move.w    #$c000,$09a(a6)    ;masterinterrupt
  2350.  
  2351.     add.l    d1,a0
  2352.     add.l    d1,a2
  2353.     dbra    d0,roty.blit
  2354.  
  2355.     tst.l    rotdel-rot(a5)    ;delay ?
  2356.     bne    roty.end
  2357.  
  2358.     tst.b    rotwaitx-rot(a5)    ;regel voorbij ?
  2359.     beq    roty.char
  2360.  
  2361.     tst.l    rotchrn-rot(a5)    ;nog karakters printen ?
  2362.     beq    roty.ga
  2363.     bra    roty.print
  2364.     
  2365. roty.char
  2366.     move.l    rottpos-rot(a5),a2    ;textpos
  2367.     move.l    #8,rotmaxr-rot(a5)    ;max regelhoogte wissen
  2368.  
  2369.     lea    fon_widtab(a1),a3
  2370.     moveq.l    #0,d1        ;text lengte
  2371.     moveq.l    #0,d2        ;aantal chars
  2372.     moveq.l    #0,d3        ;reverse point
  2373. roty.a                ;text lengte tellen
  2374.     tst.b    (a2)+        ;einde text ?
  2375.     beq    roty.bb
  2376.     cmp.b    #$a,-1(a2)
  2377.     beq    roty.bb
  2378.  
  2379.     moveq.l    #0,d7
  2380.     move.b    -1(a2),d7
  2381.     cmp.b    #'_',d7
  2382.     bne    roty.nocom
  2383.  
  2384.     bsr    rotchgc        ;handle command
  2385.  
  2386.     tst.l    rotrev-rot(a5)    ;reverse centreren ?
  2387.     beq    roty.norev
  2388.     move.l    rotrev-rot(a5),d0    ;reverse punt
  2389.     clr.l    rotrev-rot(a5)    ;reverse wissen
  2390.     sub.l    d1,d0        ;-huidige lengte
  2391.     cmp.w    #0,d0
  2392.     bge    roty.revk
  2393.     moveq.l    #0,d0
  2394. roty.revk
  2395.     move.l    d0,d3
  2396.  
  2397. roty.norev
  2398.  
  2399.     tst.l    rotc_fon-rot(a5)    ;font opnieuw halen
  2400.     beq    roty.end
  2401.     move.l    rotc_fon-rot(a5),a1
  2402.     lea    fon_widtab(a1),a3
  2403.     bra    roty.a
  2404.  
  2405. roty.nocom
  2406.     move.l    fon_hgt(a1),d0
  2407.     cmp.w    2+rotmaxr-rot(a5),d0    ;maxy check
  2408.     blt    roty.notbigger2
  2409.     move.l    d0,rotmaxr-rot(a5)
  2410. roty.notbigger2
  2411.  
  2412. ;    lsl.l    #1,d7
  2413.     add.l    d7,d7
  2414.     
  2415.     add.w    (a3,d7),d1        ;breedte karakter optellen
  2416.     add.l    #1,d2        ;aantal karakters
  2417.     bra    roty.a
  2418.  
  2419. roty.bb
  2420.     cmp.l    #(rotv_wid-rots_scrwid)*8,d1    ;beeld breedte
  2421.     ble    roty.cx
  2422.     move.l    #(rotv_wid-rots_scrwid)*8,d1
  2423.  
  2424. roty.cx
  2425.     tst.l    d3        ;reverse centreren ?
  2426.     beq    roty.mid
  2427.     move.l    d3,rotpsx-rot(a5)
  2428.     bra    roty.rev
  2429. roty.mid
  2430.     move.l    #(rots_wid+rots_cen)*4,d5    ;midden centreren
  2431.     lsr.l    #1,d1        ;/2
  2432.     sub.l    d1,d5        ;xpos
  2433.     move.l    d5,rotpsx-rot(a5)
  2434.  
  2435. roty.rev
  2436.     move.l    d2,rotchrn-rot(a5)    ;aantal characters
  2437.     move.l    rotmaxr-rot(a5),d0    ;hoogte regel
  2438.     cmp.w    #32,d0        ;maximaal 32 stappen
  2439.     ble    roty.nocut
  2440.     move.l    #32,d0
  2441. roty.nocut
  2442.     move.l    rotspd-rot(a5),d1    ;snelheid
  2443.     add.l    #1,d1
  2444.     divs    d1,d0        ;hoogte/snelheid
  2445.     and.l    #$ffff,d0
  2446.     divs    d0,d2        ;aantal chars/(hoogte/snelheid)
  2447.     add.w    #1,d2
  2448.     move.w    d2,2+rotchrvb-rot(a5)    ;aantal per vb
  2449.  
  2450.     clr.l    rotchrp-rot(a5)
  2451. roty.print
  2452.     lea    fon_widtab(a1),a3
  2453.  
  2454.     lea    rotpln1,a0        ;text printen
  2455.     add.l    rotdub-rot(a5),a0
  2456.  
  2457.     move.l    rotchrvb-rot(a5),d1    ;aantal chars per keer
  2458.     move.l    rottpos-rot(a5),a2    ;textpos
  2459.     move.l    rotchrp-rot(a5),d3    ;hoogte aanpassing
  2460.  
  2461.     move.l    rotspd-rot(a5),d0
  2462.     add.l    #1,d0
  2463.     muls    d0,d3
  2464.  
  2465.     add.l    #1,rotchrp-rot(a5)    ;1 lijn hoger printen
  2466. roty.c
  2467.     tst.b    (a2)+
  2468.     beq    roty.gb
  2469.     cmp.b    #$a,-1(a2)
  2470.     beq    roty.d
  2471.  
  2472.     moveq.l    #0,d7
  2473.     move.b    -1(a2),d7
  2474.  
  2475.     cmp.b    #'_',d7
  2476.     bne    roty.nocom2
  2477.     bsr    rotchg        ;handle command
  2478.  
  2479.     cmp.l    #3,rotmod-rot(a5)    ;y scroll ?
  2480.     beq    roty.cont
  2481.     cmp.l    #4,rotmod-rot(a5)    ;y scroll ?
  2482.     bne    roty.reset
  2483. roty.cont
  2484.  
  2485.     tst.l    rotc_fon-rot(a5)    ;font opnieuw halen
  2486.     beq    roty.end
  2487.     move.l    rotc_fon-rot(a5),a1
  2488.     lea    fon_widtab(a1),a3    ;breedte opnieuw halen
  2489.     bra    roty.c
  2490. roty.nocom2
  2491.     move.l    d7,d2
  2492. ;    lsl.l    #1,d2
  2493.     add.l    d2,d2
  2494.  
  2495.     tst.w    (a3,d2)        ;karakter leeg ?
  2496.     beq    roty.c
  2497.  
  2498.     move.l    fon_hgt(a1),d4
  2499.     cmp.w    2+rotmaxr-rot(a5),d4    ;maxy check
  2500.     blt    roty.notbigger
  2501.     move.l    d4,rotmaxr-rot(a5)
  2502. roty.notbigger
  2503.  
  2504.     move.l    rotpsx-rot(a5),d4    ;huidige x-positie
  2505.     add.w    (a3,d2),d4
  2506.  
  2507.     cmp.w    #(rotc_wid+rotv_wid)*8,d4    ;beeld breedte
  2508.     bgt    roty.caa        ;randje bereikt ?
  2509.  
  2510.     move.l    rotmaxr-rot(a5),d6    ;maxy
  2511.     sub.l    fon_hgt(a1),d6    ;-huidige y
  2512.     lsr.l    #1,d6        ;/2
  2513.     add.l    #rotv_hgt+rotc_hgty,d6    ;ypos
  2514.     sub.l    d3,d6        ;hoogte aanpassing
  2515.         
  2516.     move.l    rotcol-rot(a5),d4    ;kleur
  2517.     move.l    rotpsx-rot(a5),d5    ;huidge x-pos halen
  2518.     bsr    rotchr
  2519.  
  2520. roty.caa
  2521.     move.w    (a3,d2),d4
  2522.     add.w    d4,2+rotpsx-rot(a5)    ;xpos
  2523.  
  2524.     sub.l    #1,rotchrn-rot(a5)    ;chars aftellen
  2525.     tst.l    rotchrn-rot(a5)
  2526.     beq    roty.d        ;klaar voor nu
  2527.     sub.l    #1,d1        ;vblank aftellen
  2528.     tst.l    d1
  2529.     beq    roty.dj
  2530.     bra    roty.c
  2531.  
  2532. roty.gb
  2533.     move.l    rottnew-rot(a5),rottpos-rot(a5)    ;einde scroll
  2534.     bra    roty.gj
  2535. roty.d
  2536.     clr.l    rotchrvb-rot(a5)
  2537.     clr.l    rotchrn-rot(a5)
  2538. roty.dj
  2539.     move.l    a2,rottpos-rot(a5)
  2540. roty.gc
  2541.     tst.b    rotwaitx-rot(a5)    ;regel voorbij ?
  2542.     bne    roty.ga
  2543.  
  2544. roty.gj
  2545.     move.l    rotmaxr-rot(a5),d0    ;max hoogte
  2546.     move.l    rotspd-rot(a5),d1
  2547.     add.l    #1,d1
  2548.     divs    d1,d0
  2549.     move.b    d0,rotwaitx-rot(a5)
  2550.     bra    roty.end
  2551. roty.ga
  2552.     sub.b    #1,rotwaitx-rot(a5)    ;teller aftellen
  2553. ;roty.gt
  2554.     bra    roty.end
  2555. roty.reset
  2556.     bsr    rotres
  2557. roty.end
  2558.     movem.l    (sp)+,d0-d7/a0-a6
  2559.     rts
  2560.  
  2561.  
  2562. rotx
  2563.     movem.l    d0-d7/a0-a6,-(sp)
  2564.     
  2565.     bsr    rotxc
  2566.     bsr    rotxb
  2567.     
  2568.     movem.l    (sp)+,d0-d7/a0-a6
  2569.     rts
  2570.     
  2571. rotxc                ;karakter zetten
  2572.     movem.l    d0-d7/a0-a6,-(sp)
  2573.  
  2574. rotxc.a
  2575.     tst.l    rotdel-rot(a5)    ;delay ?
  2576.     bne    rotxc.end
  2577.  
  2578.     move.l    rottpos-rot(a5),a2    ;huidige scroll pointer
  2579.     
  2580. rotxc.f
  2581.     tst.b    (a2)        ;einde scroll ?
  2582.     bne    rotxc.g
  2583.     move.l    rottnew-rot(a5),rottpos-rot(a5)    ;scroll opnieuw
  2584.     bra    rotxc.a
  2585. rotxc.g
  2586.     tst.b    rotwaitx-rot(a5)    ;karakter voorbij ?
  2587.     bne    rotxc.c
  2588.  
  2589. rotxc.zb
  2590.     moveq.l    #0,d7
  2591.     move.b    (a2)+,d7
  2592.     cmp.b    #'_',d7        ;commando ?
  2593.     bne    rotxc.za
  2594.  
  2595.     bsr    rotchg        ;handle command
  2596.  
  2597.     tst.l    rotdel-rot(a5)    ;delay ?
  2598.     bne    rotxc.store
  2599.  
  2600.     cmp.l    #3,rotmod-rot(a5)    ;y scroll ?
  2601.     beq    rotxc.reset
  2602.     cmp.l    #4,rotmod-rot(a5)    ;y scroll ?
  2603.     beq    rotxc.reset
  2604.     cmp.l    #5,rotmod-rot(a5)    ;page ?
  2605.     beq    rotxc.reset
  2606.  
  2607.     bra    rotxc.zb
  2608. rotxc.za
  2609.     tst.l    rotc_fon-rot(a5)    ;font leeg ?
  2610.     beq    rotxc.end
  2611.     move.l    rotc_fon-rot(a5),a1
  2612.  
  2613.     move.l    rotpsy-rot(a5),d6    ;ypos & centreren
  2614.  
  2615.     move.l    #rotv_hgt+rotc_hgty,d1
  2616.     cmp.l    d1,d6
  2617.     ble    rotxc.nomaxy2
  2618.     move.l    d1,d6
  2619. rotxc.nomaxy2
  2620.  
  2621.     move.l    fon_hgt(a1),d1
  2622.     lsr.l    #1,d1
  2623.     sub.l    d1,d6
  2624.  
  2625.     moveq.l    #0,d1
  2626.     lea    fon_widtab(a1),a3
  2627.     move.l    d7,d2
  2628. ;    lsl.l    #1,d2        ;*2
  2629.     add.l    d2,d2
  2630.  
  2631.     move.w    (a3,d2),d1        ;karakter breedte
  2632.     tst.w    d1        ;karakter is leeg ?
  2633.     beq    rotxc.zb        ;next karakter
  2634.  
  2635.     move.l    #(rots_wid+rotv_wid)*4,d5    ;xpos
  2636.     cmp.l    #2,rotmod-rot(a5)        ;> scroll ?
  2637.     bne    rotxc.nor
  2638.     move.l    #(rots_wid-rotv_wid)*4,d5    ;xpos
  2639.     sub.l    d1,d5            ;-breedte
  2640. rotxc.nor
  2641.     move.l    rotcol-rot(a5),d4    ;kleur
  2642.  
  2643.     lea    rotpln1,a0
  2644.     move.l    rotdub-rot(a5),d0
  2645.     eor.l    #rotpic2-rotpic1,d0
  2646.     add.l    d0,a0
  2647.     bsr    rotchr        ;print karakter
  2648.  
  2649.     move.l    rotspd-rot(a5),d0
  2650.     add.l    #1,d0
  2651.     divs    d0,d1
  2652.     move.b    d1,rotwaitx-rot(a5)    ;karakter breedte
  2653.     bra    rotxc.store
  2654. rotxc.c
  2655.     sub.b    #1,rotwaitx-rot(a5)    ;karakter delay
  2656.     bra    rotxc.end
  2657. rotxc.reset
  2658.     bsr    rotres
  2659. rotxc.store
  2660.     move.l    a2,rottpos-rot(a5)
  2661. rotxc.end
  2662.     movem.l    (sp)+,d0-d7/a0-a6
  2663.     rts
  2664.  
  2665. rotxb
  2666.     movem.l    d0-d7/a0-a6,-(sp)
  2667.  
  2668.     tst.l    rotc_fon-rot(a5)    ;font leeg ?
  2669.     beq    rotxb.end
  2670.     move.l    rotc_fon-rot(a5),a1
  2671.  
  2672.     lea    rotpln1,a0        ;ycentreren
  2673.  
  2674.     move.l    rotpsy-rot(a5),d0
  2675.  
  2676. ;    move.l    #rotv_hgt+rotc_hgty,d1
  2677. ;    cmp.l    d1,d0
  2678. ;    ble    rotxb.nomaxy
  2679. ;    move.l    d1,d0
  2680. ;rotxb.nomaxy
  2681.  
  2682.     move.l    #rotc_hgtx/2,d1
  2683.     sub.l    d1,d0
  2684.     muls    #rots_wid*rots_dpt,d0
  2685.     add.l    d0,a0
  2686.  
  2687.     add.l    #(rots_wid-rotv_wid)/2,a0    ;xcentreren
  2688.  
  2689.     move.l    a0,a2        ;destination !!!
  2690.  
  2691.     move.l    rotdub-rot(a5),d0
  2692.     add.l    d0,a2        ;destination
  2693.     eor.l    #rotpic2-rotpic1,d0
  2694.     add.l    d0,a0        ;source
  2695.  
  2696.     move.l    rotspd-rot(a5),d6    ;rotate word berekenen
  2697.  
  2698.     cmp.l    #1,rotmod-rot(a5)    ;rechts scroll
  2699.     beq    rotxb.left
  2700.  
  2701.     moveq.l    #0,d0
  2702.     tst.l    rotdel-rot(a5)    ;delay ?
  2703.     bne    rotxb.del1
  2704.  
  2705.     add.l    #1,d6
  2706.     divs    #16,d6
  2707.  
  2708. ;    lsl.w    #1,d6
  2709.     add.w    d6,d6
  2710.  
  2711.     moveq.l    #0,d5
  2712.     move.w    d6,d5
  2713.     clr.w    d6
  2714.     lsr.l    #4,d6
  2715.  
  2716.     sub.l    d5,a0
  2717.     move.l    d6,d0
  2718. rotxb.del1
  2719.     
  2720.     move.w    #%1111111111111111,$044(a6)
  2721.     move.w    #%0,$046(a6)
  2722.  
  2723.     sub.l    rotc_maxx-rot(a5),a0
  2724.     sub.l    rotc_maxx-rot(a5),a2
  2725.     bra    rotxb.xblit
  2726. rotxb.left
  2727.  
  2728.     moveq.l    #0,d0
  2729.     tst.l    rotdel-rot(a5)    ;delay ?
  2730.     bne    rotxb.del2
  2731.  
  2732.     divs    #16,d6
  2733. ;    lsl.w    #1,d6
  2734.     add.w    d6,d6
  2735.     
  2736.     moveq.l    #0,d5
  2737.     move.w    d6,d5
  2738.     clr.w    d6
  2739.     lsr.l    #4,d6
  2740.  
  2741.     add.l    d5,a0        ;links scroll
  2742.     add.l    #2,a0
  2743.     
  2744.     move.l    #$f000,d0
  2745.     sub.l    d6,d0
  2746. rotxb.del2
  2747.  
  2748.     move.w    #%1111111111111111,$044(a6)
  2749.     move.w    #%1111111111111111,$046(a6)
  2750.  
  2751. rotxb.xblit
  2752. ;    move.w    #$4000,$09a(a6)    ;masterinterrupt
  2753.  
  2754.     move.w    d0,$042(a6)
  2755.     add.w    #$900+$f0,d0
  2756.     move.w    d0,$040(a6)
  2757.  
  2758.     move.l    #rots_wid-rotv_wid,d0    ;modulos
  2759.     sub.l    rotc_maxx-rot(a5),d0
  2760.     move.w    d0,$064(a6)
  2761.     move.w    d0,$066(a6)
  2762.  
  2763.     move.l    #rotc_hgtx*rots_dpt*64,d1    ;*depth
  2764. ;    move.l    rotc_maxy-rot(a5),d1    ;hoogte regel
  2765. ;    lsl.l    #6,d1
  2766.  
  2767.     move.l    #rotv_wid,d0
  2768.     add.l    rotc_maxx-rot(a5),d0
  2769.     lsr.l    #1,d0
  2770.     add.w    d1,d0
  2771.     
  2772. rotxb.ka
  2773.     move.l    a0,$050(a6)        ;source
  2774.     move.l    a2,$054(a6)        ;destination
  2775.     move.w    d0,$058(a6)
  2776.     bsr    rotwit
  2777. ;    move.w    #$c000,$09a(a6)    ;masterinterrupt
  2778.  
  2779. rotxb.end
  2780.     movem.l    (sp)+,d0-d7/a0-a6
  2781.     rts
  2782.  
  2783. rotres
  2784.     movem.l    d0-d7/a0-a6,-(sp)
  2785.     clr.l    rotmaxr-rot(a5)
  2786.     clr.l    rotmaxx-rot(a5)
  2787.     clr.l    rotchrn-rot(a5)
  2788.     clr.l    rotchrvb-rot(a5)
  2789.     clr.l    rotchrp-rot(a5)
  2790.     movem.l    (sp)+,d0-d7/a0-a6
  2791.     rts
  2792.  
  2793. rotnum                ;a2=string = d0=nummer
  2794.     movem.l    d1-d7/a0-a1/a3-a6,-(sp)
  2795.  
  2796.     moveq.l    #0,d0
  2797.     move.l    a2,a0    
  2798. rotnum.gb
  2799.     cmp.b    #'0',(a2)+        ;einde nummer zoeken
  2800.     blt    rotnum.ga    
  2801.     cmp.b    #'9',-1(a2)
  2802.     ble    rotnum.gb
  2803. rotnum.ga
  2804.     sub.l    #1,a2
  2805.     move.l    a2,a1        ;einde nummer bewaren
  2806.     
  2807.     cmp.l    a0,a1        ;helemaal niets ?
  2808.     beq    rotnum.end
  2809.     
  2810.     move.l    #1,d3        ;hoogte ascii naar decimaal
  2811. rotnum.c
  2812.     moveq.l    #0,d1
  2813.     move.b    -(a1),d1
  2814.  
  2815.     cmp.b    #'0',d1        ;nummer ?
  2816.     blt    rotnum.ca    
  2817.     cmp.b    #'9',d1
  2818.     bgt    rotnum.ca
  2819.  
  2820.     sub.w    #'0',d1
  2821.     muls    d3,d1
  2822.     add.l    d1,d0
  2823.     muls    #10,d3
  2824.     bra    rotnum.c
  2825.  
  2826. rotnum.ca
  2827. rotnum.end
  2828.     movem.l    (sp)+,d1-d7/a0-a1/a3-a6
  2829.     rts
  2830.     
  2831. ;    Karakter op scherm
  2832. ;    a0=bitplane
  2833. ;    a1=fontfile
  2834. ;    d4=kleur
  2835. ;    d5=x
  2836. ;    d6=y
  2837. ;    d7=karakter
  2838.  
  2839. rotchr
  2840.     movem.l    d0-d7/a0-a6,-(sp)
  2841.  
  2842.     lea    fon_rawpos(a1),a3
  2843.     moveq.l    #0,d0
  2844.     move.b    d7,d0
  2845.  
  2846. ;    lsl.l    #2,d0        ;*4
  2847.     add.l    d0,d0
  2848.     add.l    d0,d0
  2849.  
  2850.     move.l    a1,a2
  2851.  
  2852.     tst.l    (a3,d0)        ;is er char ?
  2853.     beq    rotchr.end
  2854.     
  2855.     add.l    (a3,d0),a2        ;raw planes
  2856.     
  2857.     lea    fon_widtab(a1),a3
  2858.     lsr.l    #1,d0        ;/2
  2859.     move.w    (a3,d0),d3
  2860.     add.w    2+fon_wid(a1),d3    ;+xpos
  2861.     add.w    #16+15,d3        ;wordboven afrond+blitruimte
  2862.     lsr.w    #4,d3        ;/16
  2863.  
  2864. ;    lsl.w    #1,d3        ;*2 D3=wid !!!!!!
  2865.     add.w    d3,d3
  2866.         
  2867.     move.l    d3,d2
  2868.     muls    2+fon_hgt(a1),d2    ;d3=x*y
  2869.  
  2870.     muls    #rots_wid*rots_dpt,d6    ;y
  2871.     add.l    d6,a0
  2872.  
  2873.     divs    #16,d5        ;x
  2874.  
  2875. ;    lsl.w    #1,d5
  2876.     add.w    d5,d5
  2877.     
  2878.     moveq.l    #0,d0
  2879.     move.w    d5,d0
  2880.     add.l    d0,a0        ;destination !
  2881.     clr.w    d5
  2882.     lsr.l    #4,d5
  2883.  
  2884. ;    move.w    #$4000,$09a(a6)
  2885.  
  2886.     move.l    #-1,$044(a6)
  2887.  
  2888.     move.w    d5,$042(a6)        ;x-rol
  2889.     add.w    #$f00+$ca,d5
  2890.     move.w    d5,$040(a6)        ;x-rol
  2891.  
  2892.     move.l    #rots_wid*rots_dpt,d0
  2893.     sub.l    d3,d0
  2894.     move.w    d0,$060(a6)
  2895.  
  2896.     move.w    #0,$062(a6)
  2897.     move.w    #0,$064(a6)
  2898.  
  2899.     move.w    d0,$066(a6)
  2900.  
  2901.     move.l    fon_dpt(a1),d7    ;font depth
  2902.  
  2903.     move.l    a2,a3        ;source=mask
  2904.     cmp.w    #1,d7        ;mask handling
  2905.     beq    rotchr.aa
  2906.     move.l    d2,d0        ;x*y
  2907.     muls    2+fon_dpt(a1),d0    ;*d
  2908.     add.l    d0,a3        ;mask
  2909. rotchr.aa
  2910.     move.l    #rots_dpt,d6
  2911.     cmp.w    d6,d7        ;fontdpt>screendpt ?
  2912.     ble    rotchr.ab
  2913.     move.w    d6,d7
  2914. rotchr.ab
  2915.     sub.w    #1,d6
  2916.     sub.w    #1,d7
  2917.     
  2918.     move.l    fon_hgt(a1),d0    ;bltsiz
  2919.     lsl.l    #6,d0
  2920.     move.l    d3,d1
  2921.     lsr.l    #1,d1
  2922.     add.l    d1,d0
  2923.  
  2924.     tst.w    d7        ;geen colorfont ?
  2925.     beq    rotchr.msk
  2926. rotchr.a    
  2927.     move.l    a0,$048(a6)        ;destination
  2928.     move.l    a2,$04c(a6)        ;source ?
  2929.     move.l    a3,$050(a6)        ;(a3) mask ?
  2930.     move.l    a0,$054(a6)        ;destination
  2931.     move.w    d0,$058(a6)
  2932.     bsr    rotwit
  2933.     add.l    d2,a2        ;x*y
  2934.     add.l    #rots_wid,a0
  2935.     sub.l    #1,d6
  2936.     dbra    d7,rotchr.a
  2937.  
  2938. rotchr.msk
  2939.     cmp.w    #-1,d6        ;alle screenframes gehad ?
  2940.     beq    rotchr.ax
  2941.     moveq.l    #0,d1
  2942. rotchr.ac
  2943.     btst    d1,d4        ;kleur ?
  2944.     beq    rotchr.ad
  2945.     move.l    a0,$048(a6)        ;destination
  2946.     move.l    a3,$04c(a6)        ;mask
  2947.     move.l    a3,$050(a6)        ;mask
  2948.     move.l    a0,$054(a6)        ;destination
  2949.     move.w    d0,$058(a6)
  2950.     bsr    rotwit
  2951. rotchr.ad
  2952.     add.l    #1,d1
  2953.     add.l    #rots_wid,a0
  2954.     dbra    d6,rotchr.ac
  2955.  
  2956. rotchr.ax
  2957. ;    move.w    #$c000,$09a(a6)
  2958. rotchr.end
  2959.     movem.l    (sp)+,d0-d7/a0-a6
  2960.     rts
  2961.  
  2962.     
  2963. rotwit
  2964. rotwit.a
  2965.     btst    #14-8,($dff002).l
  2966.     bne    rotwit.a
  2967.     rts
  2968.     
  2969. rotdub    dc.l    0
  2970.  
  2971. rotc_fon    dc.l    0    ;currentfont
  2972. rotc_fonnum    dc.l    0    ;currentfontnumber
  2973. rotc_maxy    dc.l    rotc_hgty    ;maximale y-waarde
  2974. rotc_maxx    dc.l    rotc_wid    ;maximale x-waarde
  2975.  
  2976. rotrev    dc.l    0    ;delay
  2977. rotdel    dc.l    0    ;delay
  2978. rotpsx    dc.l    0    ;huidige xpos
  2979. rotpsy    dc.l    (rots_hgt/2);huidige ypos
  2980.  
  2981. rotmaxx    dc.l    0    ;
  2982. rotmaxr    dc.l    0    ;maximale regelhoogte
  2983. rotchrn    dc.l    0    ;aantal chars per vb
  2984. rotchrvb    dc.l    0    ;aantal chars per regel
  2985. rotchrp    dc.l    0    ;hoogte aanpassing
  2986.  
  2987. rotvar    dc.l    0
  2988. rotspd    dc.l    0
  2989. rotcol    dc.l    0    ;huidige karakterkleur
  2990. rotmod    dc.l    0
  2991.  
  2992. rottnew    dc.l    0
  2993. rottpos    dc.l    0
  2994.  
  2995. rotwaitx    dc.b    0
  2996.  
  2997.  
  2998. ;pic_wid    equ    4        ;wide in bytes
  2999. ;pic_hgt    equ    6        ;hoogte
  3000. ;pic_dpt    equ    8        ;number planes
  3001. ;pic_ani    equ    10        ;aantal effes (anim)
  3002. ;pic_vew    equ    12        ;viewmode
  3003. ;pic_cycstr    equ    14        ;cycle start (*4)
  3004. ;pic_cycend    equ    15        ;cycle end (*4)
  3005. ;pic_cycspd    equ    16        ;cycle speed (*4)
  3006. ;pic_cycadd    equ    17        ;cycle add (*4)
  3007. ;pic_palnum    equ    30        ;aantal kleuren
  3008. ;pic_pal    equ    32        ;palette start
  3009. ;pic_palsiz    equ    256*2        ;vaste palette size
  3010. ;pic_raw    equ    pic_pal+pic_palsiz    ;palette start
  3011.  
  3012.  
  3013.  
  3014.     cnop    0,8
  3015. rotpic1
  3016.     dc.l    'PICT'
  3017.     dc.w    rots_wid,rots_hgt,rots_dpt,1,rots_vew
  3018.     ifd    ocs
  3019.     ds.b    4*4
  3020.     endc
  3021.     ifnd    ocs
  3022.     ds.b    8*4+16
  3023.     endc
  3024.     
  3025.     ifeq    rots_dpt-1
  3026.     dc.w    2-1
  3027.     ifd    ocs
  3028.     dc.w    $000,$fff
  3029.     ds.w    256-2
  3030.     endc
  3031.     ifnd    ocs
  3032.     dc.w    $000,0,$fff,0
  3033.     ds.l    256-2
  3034.     endc
  3035.     endc
  3036.  
  3037.     ifeq    rots_dpt-2
  3038.     dc.w    4-1
  3039.     ifd    ocs
  3040.     dc.w    $000,$fff,$bbb,$555
  3041.     ds.w    256-4
  3042.     endc
  3043.     ifnd    ocs
  3044.     dc.w    $000,0,$fff,0,$bbb,0,$555,0
  3045.     ds.l    256-4
  3046.     endc
  3047.     endc
  3048.  
  3049.     ifeq    rots_dpt-3
  3050.     dc.w    8-1
  3051.     ifd    ocs
  3052.     dc.w    $000,$fff,$ddd,$bbb,$999,$777,$555,$333
  3053.     ds.w    256-8
  3054.     endc
  3055.     ifnd    ocs
  3056.     dc.w    $000,0,$fff,0,$ddd,0,$bbb,0,$999,0,$777,0,$555,0,$333,0
  3057.     ds.l    256-8
  3058.     endc
  3059.     endc
  3060.  
  3061.     ifeq    rots_dpt-4
  3062.     dc.w    16-1
  3063.     ifd    ocs
  3064.     dc.w    $000,$fff,$ddd,$bbb,$999,$777,$555,$333
  3065.     dc.w    $000,$ff0,$dd0,$bb0,$990,$770,$550,$330
  3066.     ds.w    256-16
  3067.     endc
  3068.     ifnd    ocs
  3069.     dc.w    $000,0,$fff,0,$ddd,0,$bbb,0,$999,0,$777,0,$555,0,$333,0
  3070.     dc.w    $000,0,$ff0,0,$dd0,0,$bb0,0,$990,0,$770,0,$550,0,$330,0
  3071.     ds.l    256-16
  3072.     endc
  3073.     endc
  3074.  
  3075.     ifeq    rots_dpt-5
  3076.     dc.w    32-1
  3077.     ifd    ocs
  3078.     dc.w    $000,$fff,$ddd,$bbb,$999,$777,$555,$333
  3079.     dc.w    $000,$ff0,$dd0,$bb0,$990,$770,$550,$330
  3080.     dc.w    $000,$0ff,$0dd,$0bb,$099,$077,$055,$033
  3081.     dc.w    $000,$f0f,$d0d,$b0b,$909,$707,$505,$303
  3082.     ds.w    256-32
  3083.     endc
  3084.     ifnd    ocs
  3085.     dc.w    $000,0,$fff,0,$ddd,0,$bbb,0,$999,0,$777,0,$555,0,$333,0
  3086.     dc.w    $000,0,$ff0,0,$dd0,0,$bb0,0,$990,0,$770,0,$550,0,$330,0
  3087.     dc.w    $000,0,$0ff,0,$0dd,0,$0bb,0,$099,0,$077,0,$055,0,$033,0
  3088.     dc.w    $000,0,$f0f,0,$d0d,0,$b0b,0,$909,0,$707,0,$505,0,$303,0
  3089.     ds.l    256-32
  3090.     endc
  3091.     endc
  3092.  
  3093. rotpln1
  3094.     ds.b    rots_dpt*rots_wid*rots_hgt
  3095.  
  3096.     cnop    0,8
  3097. rotpic2
  3098.     dc.l    'PICT'
  3099.     dc.w    rots_wid,rots_hgt,rots_dpt,1,rots_vew
  3100.     ifd    ocs
  3101.     ds.b    4*4
  3102.     endc
  3103.     ifnd    ocs
  3104.     ds.b    8*4+16
  3105.     endc
  3106.     
  3107.     ifeq    rots_dpt-1
  3108.     dc.w    2-1
  3109.     ifd    ocs
  3110.     dc.w    $000,$fff
  3111.     ds.w    256-2
  3112.     endc
  3113.     ifnd    ocs
  3114.     dc.w    $000,0,$fff,0
  3115.     ds.l    256-2
  3116.     endc
  3117.     endc
  3118.  
  3119.     ifeq    rots_dpt-2
  3120.     dc.w    4-1
  3121.     ifd    ocs
  3122.     dc.w    $000,$fff,$bbb,$555
  3123.     ds.w    256-4
  3124.     endc
  3125.     ifnd    ocs
  3126.     dc.w    $000,0,$fff,0,$bbb,0,$555,0
  3127.     ds.l    256-4
  3128.     endc
  3129.     endc
  3130.  
  3131.     ifeq    rots_dpt-3
  3132.     dc.w    8-1
  3133.     ifd    ocs
  3134.     dc.w    $000,$fff,$ddd,$bbb,$999,$777,$555,$333
  3135.     ds.w    256-8
  3136.     endc
  3137.     ifnd    ocs
  3138.     dc.w    $000,0,$fff,0,$ddd,0,$bbb,0,$999,0,$777,0,$555,0,$333,0
  3139.     ds.l    256-8
  3140.     endc
  3141.     endc
  3142.  
  3143.     ifeq    rots_dpt-4
  3144.     dc.w    16-1
  3145.     ifd    ocs
  3146.     dc.w    $000,$fff,$ddd,$bbb,$999,$777,$555,$333
  3147.     dc.w    $000,$ff0,$dd0,$bb0,$990,$770,$550,$330
  3148.     ds.w    256-16
  3149.     endc
  3150.     ifnd    ocs
  3151.     dc.w    $000,0,$fff,0,$ddd,0,$bbb,0,$999,0,$777,0,$555,0,$333,0
  3152.     dc.w    $000,0,$ff0,0,$dd0,0,$bb0,0,$990,0,$770,0,$550,0,$330,0
  3153.     ds.l    256-16
  3154.     endc
  3155.     endc
  3156.  
  3157.     ifeq    rots_dpt-5
  3158.     dc.w    32-1
  3159.     ifd    ocs
  3160.     dc.w    $000,$fff,$ddd,$bbb,$999,$777,$555,$333
  3161.     dc.w    $000,$ff0,$dd0,$bb0,$990,$770,$550,$330
  3162.     dc.w    $000,$0ff,$0dd,$0bb,$099,$077,$055,$033
  3163.     dc.w    $000,$f0f,$d0d,$b0b,$909,$707,$505,$303
  3164.     ds.w    256-32
  3165.     endc
  3166.     ifnd    ocs
  3167.     dc.w    $000,0,$fff,0,$ddd,0,$bbb,0,$999,0,$777,0,$555,0,$333,0
  3168.     dc.w    $000,0,$ff0,0,$dd0,0,$bb0,0,$990,0,$770,0,$550,0,$330,0
  3169.     dc.w    $000,0,$0ff,0,$0dd,0,$0bb,0,$099,0,$077,0,$055,0,$033,0
  3170.     dc.w    $000,0,$f0f,0,$d0d,0,$b0b,0,$909,0,$707,0,$505,0,$303,0
  3171.     ds.l    256-32
  3172.     endc
  3173.     endc
  3174.  
  3175. rotpln2
  3176.     ds.b    rots_dpt*rots_wid*rots_hgt
  3177.  
  3178.  
  3179. rot.e
  3180.  
  3181. ;**********************************************************************
  3182.  
  3183. ;and here are the incbin-files....
  3184.  
  3185.         ifd    rout
  3186.         cnop    0,8
  3187. rotincfon
  3188.         incbin    'w:effectaga/platinum_13.fon'
  3189.         cnop    0,8
  3190. rotinctxt
  3191.         incbin    'w:effectaga/scroll_l2.txt'
  3192.         endc
  3193.         
  3194.  
  3195.